信号量计数值何时加1呢?
搜索旧文档,发现以下内容,写得很好(见后):
现请问:
1. 信号量计数值何时加1呢?
2. 用CreateSemaphore函数创建信号量后,其计数值为多少?
3. <使用WaitForSingleObject等待函数,可以获得处于信号状态的信号量。>是否意味:就一直等待下去, 直到非信号状态,才将处理权交给线程?
我现在在看<WIN32多线程程序设计>,有些迷糊。
------------------------
程序使用信号量对资源进行计数,使用信号量可以统计可用资源的数量并分配资源。
用CreateSemaphore函数可以创建信号量,并返回其句柄。信号量保存[0-XXX]之间的记数值。
当计数值大于0时,信号量处于信号状态,即触发态;
当计数值等于0时,信号量处于非信号状态,即非触发态;
使用WaitForSingleObject等待函数,可以获得处于信号状态的信号量。
一旦WaitForSingleObject函数得到此信号量,将会使信号量的计数值减一,此时你可以处理资源分配的操作了。
--------------------------