c++實現多線程之小試牛刀

#include <cstdlib>
#include <iostream>
#include <windows.h>

using namespace std;
CRITICAL_SECTION cs;
int a=0;
DWORD WINAPI ThreadFuncA(LPVOID lp)
{
 while(a<100)
 {
  EnterCriticalSection( & cs);
  cout<<"ThreadA a = "<<a<<endl;
  a++;
  
  LeaveCriticalSection( & cs);
  Sleep(200);
 }
 return 0;
}

DWORD WINAPI ThreadFuncB(LPVOID lp)
{
 while(a<100)
 {
  EnterCriticalSection( & cs);
  cout<<"ThreadB a = "<<a<<endl;
  a++;
  LeaveCriticalSection( & cs);
  Sleep(200);
 }
 return 0;
}

int main(int argc, char *argv[])
{
 InitializeCriticalSection( & cs);
  
 HANDLE Thread[2];
 
 Thread[0]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFuncA,NULL,0,NULL);
 Thread[1]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFuncB,NULL,0,NULL);
 
 WaitForMultipleObjects(2,Thread,TRUE,100000);
 DeleteCriticalSection( & cs);
 CloseHandle (Thread);
 
    system("PAUSE");
    return EXIT_SUCCESS;
}

 

發佈了5 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章