Windows线程 信号量 CreateSemaphore创建信号量、RelaseSemaphore设置信号量
创始人
2024-02-22 15:22:47
0

信号量
相关问题
类似于事件(作用类似),解决通知的相关问题。但提供一个计数器,可以设置次数。
信号量的使用
1.创建信号量
HANDLE CreateSemaphore(
LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,//参数作废,基本用NULL
LONG lInitialCount,//初始化信号量数量,每碰到一次WaitFor…时,数量减1,当为0时产生阻塞
LONG lMaxximumCount,//信号量的量大值
LPCTSTR lpName //命名
); //创建成功返回信号量句柄
2.等候信号量
WaitForSingleObject/WaitForMulitipuleObjects
每等候通过一次,信号量的信号减1,直到为0阻塞
3.给信号量指定计数值
BOOL ReleaseSemaphore(
HANDLE hSemaphore,//信号量句柄
LONG lReleaseCount,//释放数量
LPLONG lpPreviousCount//释放前原来信号量的数量,可以设置为NULL (在设置信号量次数之前,目前还剩余的计数值);
4.关闭句柄
ColseHandle

#include 
#include 
DWORD g_nCount = 0;
HANDLE g_hSemaphore = 0;DWORD CALLBACK TestProc(LPVOID lpParam)
{while(1){WaitForSingleObject(g_hSemaphore,INFINITE);printf("print--------------%d\n",g_nCount++);}return 0;
}
int main()
{DWORD nID = 0;g_hSemaphore = CreateSemaphore(NULL,3,10,NULL);HANDLE hThread = CreateThread(NULL,0,TestProc,NULL,0,&nID);system("pause");//每按一次任一键,然后给信号量赋值10,让我们的TestProc线程继续执行。while(1){system("pause"); ReleaseSemaphore(g_hSemaphore,10,NULL); //将信号量设置为0}WaitForSingleObject(hThread,INFINITE);return 0;
}

以上代码是用主进程控制新创建线程,用信号量来控制新创建线程
在这里插入图片描述

相关内容

热门资讯

专访白明:海南全岛封关,岛内自... 12月18日,海南自贸港正式启动全岛封关。 封关后,“零关税”商品范围扩大至约6600个税目,约占全...
大金重工卷入5.73亿元工程款... 12月18日,大金重工(002487)发布公告,因与公司下属子公司存在建设工程施工合同纠纷,原告中国...
深圳罗湖区74人获评人民调解员... 深圳商报读创客户端首席记者 张玮玮 通讯员 司新宣 近日,深圳市罗湖区完成2025年人民调解员等级评...
俄央行起诉欧洲清算银行案,明年... 12月18日,俄罗斯中央银行发布正式声明,将通过莫斯科仲裁法院向欧洲清算银行追索损失,索赔理由是其资...
新日股份(603787)披露诉... 截至2025年12月18日收盘,新日股份(603787)报收于12.93元,较前一交易日上涨1.49...
原创 丝... 丝芭传媒今日以"最后通牒"形式指控艺人鞠婧祎及关联人涂某某涉嫌"严重经济犯罪",宣称将向监管部门实名...
【新闻】我县召开集体林权制度改... 温馨提示:观看视频请尽量在wifi环境下观看! 12月17日,我县召开深化集体林权制度改革工作推进会...
互联网检察公益诉讼白皮书:网络... 央广网北京12月18日消息(记者 樊瑞)12月18日下午,北京铁路运输检察院(以下简称“北京铁检院”...
长寿区医保局联合区妇联送政策进... 为进一步提升医保政策宣传覆盖面,切实保障群众医保权益,近日,重庆市长寿区医保局联合区妇联,先后赴石堰...