1#include <windows.h>2#include <stdio.h>3#include <string.h>4 //#include <afxmt.h>5 #defineT_max 1006 intticket;7 critical_section criticalsection;8 /*//Ticket thread9 DWORD WINAPI Salethread (LPVOID LP)Ten { One int n = (int) LP; A While (Ticket > 0) - { - printf ("salethread%d sell%dth ticket\n", N, t_max-ticket+1); the ticket--; - Sleep (+); - } - return 0; + } - + void MyThread () A { at HANDLE handle1,handle2,handle3,handle4,handle5; - //5 Ticket threads - handle1 = CreateThread (Null,null,salethread, (void*) 1,null,null); - handle2 = CreateThread (Null,null,salethread, (void*) 2,null,null); - handle3 = CreateThread (Null,null,salethread, (void*) 3,null,null); - handle4 = CreateThread (Null,null,salethread, (void*) 4,null,null); in handle5 = CreateThread (Null,null,salethread, (void*) 5,null,null); - } to */ + - //Ticketing Thread the DWORD WINAPI Salethread (LPVOID LP) * { $ intn = (int) LP;Panax Notoginseng while(Ticket >0) -{//Critical Zone synchronization theEnterCriticalSection (&criticalsection); +printf"salethread%d sell%dth ticket\n", N, t_max-ticket+1); Aticket--; theLeaveCriticalSection (&criticalsection); +Sleep ( -); - } $ return 0; $ } - voidMyThread () - { the HANDLE handle1,handle2,handle3,handle4,handle5; - //5 Ticketing ThreadsWuyiHandle1 = CreateThread (Null,null,salethread, (void*)1, null,null); theHandle2 = CreateThread (Null,null,salethread, (void*)2, null,null); -Handle3 = CreateThread (Null,null,salethread, (void*)3, null,null); WuHandle4 = CreateThread (Null,null,salethread, (void*)4, null,null); -Handle5 = CreateThread (Null,null,salethread, (void*)5, null,null); About } $ - intMainintargcChar*argv[]) - { -ticket= -; A //Create a critical section object +InitializeCriticalSection (&criticalsection); the if(ticket>0) - MyThread (); $Sleep (50000); the //Delete a critical section object theDeleteCriticalSection (&criticalsection); the return 0; the}
View Code
C Thread Synchronous/asynchronous