1 #include "iostream"
2 #include "windows.h"
3 using namespace std;
4
5 class CWorkerThread{
6 public:
7 CWorkerThread(LPCTSTR m_szName):m_szName(m_szName),m_hThread(INVALID_HANDLE_VALUE){
8 m_hThread=CreateThread(
9 NULL,
10 0,
11 ThreadProc,
12 reinterpret_cast<LPVOID>(this),
13 0,
14 NULL
15 );
16 }
17
18 virtual ~CWorkerThread(){CloseHandle(m_hThread);}
19
20 virtual void WaitForCompletion(){
21 WaitForSingleObject(m_hThread,INFINITE);
22 }
23
24 virtual void SetPriority(int nPriority){
25 SetThreadPriority(m_hThread,nPriority);
26 }
27
28 virtual void Suspend(){
29 SuspendThread(m_hThread);
30 }
31
32 virtual void Resume(){
33 ResumeThread(m_hThread);
34 }
35
36 protected:
37 static DWORD WINAPI ThreadProc(LPVOID lpParam){
38 CWorkerThread *pThis=
39 reinterpret_cast<CWorkerThread*>(lpParam);
40
41 pThis->DoStuff();
42 return (0);
43 }
44
45 virtual void DoStuff(){
46 for(int n=0;n<100;n++){
47 printf("Thread %s ID:%d,count %d\n",m_szName,GetCurrentThreadId(),n);
48 }
49 }
50
51 protected:
52 HANDLE m_hThread;
53 LPCTSTR m_szName;
54 };
55
56 void main(){
57
58 CWorkerThread wtB("B");
59 CWorkerThread wtA("A");
60 wtA.SetPriority(THREAD_PRIORITY_LOWEST);
61
62
63 wtA.WaitForCompletion();
64 wtB.WaitForCompletion();
65
66 cout<<"Both threads complete."<<endl;
67
68 getchar();
69 }
windows系统调用 调度优先级,布布扣,bubuko.com
时间: 2024-12-21 13:07:56