线程同步之信号量
Semaphore
信号量。
它维护一个计数,当值大于0时,信号量对象处于已传信状态。通常用数值表示可用资源的个数。
WaitForSingleObject()令信号量减一;ReleaseSemaphore()令信号量加一。
分析:
信号量值为6,MAX_SEM_COUNT ,而用到信号量的线程有8,THREADCOUNT,不包括main函数线程。所以前6个创建好的线程WaitForSingleObject()返回值为WAIT_OBJECT_0,不会阻塞。而接下来的线程WaitForSingleObject()返回值为 WAIT_TIMEOUT,它们等其他P操作成功的线程 Sleep(5)后做V操作,才能获得WAIT_OBJECT_0返回值。
8个ThreadProc线程执行完毕,主函数中WaitForMultipleObjects()函数才返回。
时间: 2024-09-22 04:38:34