標籤:style class blog code color get
1 #include "iostream" 2 #include "windows.h" 3 #include "cstring" 4 using namespace std; 5 6 HANDLE g_hSemThreads=INVALID_HANDLE_VALUE; 7 8 static DWORD WINAPI ThreadProc(LPVOID lpParam){ 9 LONG nPauseMs=reinterpret_cast<LONG>(lpParam);10 Sleep(nPauseMs);11 12 if(g_hSemThreads!=INVALID_HANDLE_VALUE){13 LONG nPrevCt(0);14 15 if(ReleaseSemaphore(16 g_hSemThreads,17 1,18 &nPrevCt19 )){20 printf("%d msec thread ended ,slots left:%d\n",nPauseMs,nPrevCt+1);21 }22 }23 24 return(0);25 }26 27 28 29 void main(){30 g_hSemThreads=CreateSemaphore(31 NULL,32 5,33 5,34 NULL35 );36 for(int nTotal=20;nTotal>0;nTotal-=2){37 WaitForSingleObject(g_hSemThreads,INFINITE);38 LONG nPauseMs=nTotal*5;39 40 HANDLE hThread=CreateThread(41 NULL,42 0,43 ThreadProc,44 reinterpret_cast<LPVOID>(nPauseMs),45 0,46 NULL47 );48 49 printf("in the %d msec a thread is creates \n",nPauseMs);50 CloseHandle(hThread);51 hThread=INVALID_HANDLE_VALUE;52 }53 54 CloseHandle(g_hSemThreads);55 g_hSemThreads=INVALID_HANDLE_VALUE;56 getchar();57 }