信号量计数值何时加1呢?

tanuser1 2003-09-24 08:03:09
搜索旧文档,发现以下内容,写得很好(见后):
现请问:
1. 信号量计数值何时加1呢?
2. 用CreateSemaphore函数创建信号量后,其计数值为多少?
3. <使用WaitForSingleObject等待函数,可以获得处于信号状态的信号量。>是否意味:就一直等待下去, 直到非信号状态,才将处理权交给线程?

我现在在看<WIN32多线程程序设计>,有些迷糊。
------------------------
程序使用信号量对资源进行计数,使用信号量可以统计可用资源的数量并分配资源。
用CreateSemaphore函数可以创建信号量,并返回其句柄。信号量保存[0-XXX]之间的记数值。
当计数值大于0时,信号量处于信号状态,即触发态;
当计数值等于0时,信号量处于非信号状态,即非触发态;

使用WaitForSingleObject等待函数,可以获得处于信号状态的信号量。
一旦WaitForSingleObject函数得到此信号量,将会使信号量的计数值减一,此时你可以处理资源分配的操作了。
--------------------------
...全文
163 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanuser1 2003-10-06
  • 打赏
  • 举报
回复
XieXie
cnstar9988 2003-09-28
  • 打赏
  • 举报
回复
程序使用信号量对资源进行计数,使用信号量可以统计可用资源的数量并分配资源。
用CreateSemaphore函数可以创建信号量,并返回其句柄。信号量保存[0-XXX]之间的记数值。
当计数值大于0时,信号量处于信号状态,即触发态;
当计数值等于0时,信号量处于非信号状态,即非触发态;

使用WaitForSingleObject等待函数,可以获得处于信号状态的信号量。
一旦WaitForSingleObject函数得到此信号量,将会使信号量的计数值减一,此时你可以处理资源分配的操作了。

已经很详细了。
tanuser1 2003-09-24
  • 打赏
  • 举报
回复
能说得详细些么?
cnstar9988 2003-09-24
  • 打赏
  • 举报
回复
使用WaitForSingleObject等待函数,不会一直等下去,当信号量不等于0时就返回了,并且使信号量减一
cnstar9988 2003-09-24
  • 打赏
  • 举报
回复
CreateSemaphore可以指定信号量计数和初始化计数。

ReleaseSemaphore(hSignal,1,NULL);
信号量表示加1。

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧