首页 > 代码库 > C线程同步/异步

C线程同步/异步

 1 #include<windows.h> 2 #include<stdio.h> 3 #include<string.h> 4 //#include <afxmt.h> 5 #define T_MAX 100 6 int  ticket; 7 CRITICAL_SECTION CriticalSection; 8 /* //售票线程 9 DWORD WINAPI SaleThread(LPVOID lp)10 {11 int n = (int) lp;12 while (ticket > 0)13 {14 printf("SaleThread%d sell %dth ticket\n", n, T_MAX-ticket+1);15 ticket--;16 Sleep(500);17 }18 return 0;19 }20 21 void MyThread()22 {23 HANDLE handle1,handle2,handle3,handle4,handle5;24 //5个售票线程25 handle1 = CreateThread(NULL,NULL,SaleThread,(void*)1,NULL,NULL);26 handle2 = CreateThread(NULL,NULL,SaleThread,(void*)2,NULL,NULL);27 handle3 = CreateThread(NULL,NULL,SaleThread,(void*)3,NULL,NULL);28 handle4 = CreateThread(NULL,NULL,SaleThread,(void*)4,NULL,NULL);29 handle5 = CreateThread(NULL,NULL,SaleThread,(void*)5,NULL,NULL);30 }31 */32 33 //售票线程34 DWORD WINAPI SaleThread(LPVOID lp)35 {36 int n = (int) lp;37 while (ticket > 0)38 { //临界区同步39 EnterCriticalSection(&CriticalSection);40 printf("SaleThread%d sell %dth ticket\n", n, T_MAX-ticket+1);41 ticket--;42 LeaveCriticalSection(&CriticalSection);43 Sleep(500);44 }45 return 0;46 }47 void MyThread()48 {49 HANDLE handle1,handle2,handle3,handle4,handle5;50 //5个售票线程51 handle1 = CreateThread(NULL,NULL,SaleThread,(void*)1,NULL,NULL);52 handle2 = CreateThread(NULL,NULL,SaleThread,(void*)2,NULL,NULL);53 handle3 = CreateThread(NULL,NULL,SaleThread,(void*)3,NULL,NULL);54 handle4 = CreateThread(NULL,NULL,SaleThread,(void*)4,NULL,NULL);55 handle5 = CreateThread(NULL,NULL,SaleThread,(void*)5,NULL,NULL);56 }57 58 int main(int argc, char* argv[])59 {60   ticket=100;61 //创建临界区对象62 InitializeCriticalSection(&CriticalSection);63 if(ticket>0)64 MyThread();65 Sleep(50000);66 //删除临界区对象67 DeleteCriticalSection(&CriticalSection);68 return 0;69 }
View Code

 

C线程同步/异步