首页 > 代码库 > windows系统调用 semaphore信号量
windows系统调用 semaphore信号量
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 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。