《Win32多线程程序设计》(5)---信号量(Semaphores)

本文介绍了Win32环境中信号量的使用,包括创建信号量、获取锁定及释放锁定三个主要步骤。信号量的初始计数值和最大值决定了能同时持有锁的线程数量。通过WaitForSingleObject()等函数获取锁定,当信号量非零时,函数会立即返回。使用ReleaseSemaphore()来释放锁定,增加信号量的当前值。
摘要由CSDN通过智能技术生成

Win32 中的一个sem aphore 可以被锁住最多n 次,其中n 是sem aphore 被产生时指定的。n常常被设计用来代表“可以锁住一份资源”的线程个数,不过并非单独一个线程就不能够拥有所有的锁定。


1.产生信号量(Semaphore)

HANDLE CreateSemaphore(
LPSECURITY_ATTRIBUTES lpAttributes,
LONG lInitialCount,
LONG lMaximumCount,
LPCTSTR lpName
);
参数
lpAttributes  安全属性。如果是NULL 就表示要使用默认属性。Windows 95 忽略这一参数。
lInitialCountsem aphore 的初值。必须大于或等于0,并且小于或等于lMaxim umCount。
lMaximumCountSem aphore 的最大值。这也就是在同一时间内能够锁住sem aphore 之线程的最多个数。
lpNameSem aphore 的名称(一个字符串)。任何线程(或进程)都可以根据这一名称引用到这个
semaphore。这个值可以是NULL,意思是产生一个没有名字的sem aphore。
返回值
如果成功就传回一个handle ,否则传回NULL。不论哪一种情况,
GetLastError() 都会传回一个合理的结果。如果指定的sem aphore 名称已经存
在,则该函数还是成功的,GetLastError() 会传回ERRO R_ALREADY_EXISTS。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值