windows下怎么获取信号量当前值 100

如题就像linux下的sem_getvalue函数。在不改变信号量的值的情况下,多线程中windows下用什么函数在线程函数里面获取一个信号量当前值?... 如题
就像linux下的sem_getvalue函数。
在不改变信号量的值的情况下,多线程中windows下用什么函数在线程函数里面获取一个信号量当前值?
展开
 我来答
繁华吥落幕
2016-01-20 · 一起聊聊关于计算机,关于软件的那些事!
繁华吥落幕
采纳数:2472 获赞数:26382

向TA提问 私信TA
展开全部
在windows中获取信号量当前值的方法:
1、分别创建进程A和B
2、进程A 创建一个叫 test 的信号量 mutex1 = CreateSemaphore(..."test"...);
3、进程B 打开该 test 信号量 mutex2 = OpenSemaphore(..."test"...);( 1 ) CreateSemaphore()
HANDLE WINAPI CreateSemaphore(
_In_opt_ LPSECURITY_ATTRIBUTES lpEventAttributes,
_In_ LONG lInitialCount,
_In_ LONG lMaximumCount,
_In_opt_ LPCTSTR lpName
);
lpEventAttributes :事件对象的安全属性,一般置为NULL ;
lInitialCount :表示一开始可以使用的资源数目,即当前资源计数;
lMaximumCount :信号量对象可以处理的最大资源数量;
lpName :创建有名的信号量对象,用于进程间的共享;
如果该信号量对象已经存在,那么 Create Semaphore会返回该内核对象的句柄,并通过系统返回错误 ERROR_ALREADY_EXISTS ,通过 GetLastError ()获得。
因为系统会维护内核对象的一个使用计数,每被引用一次,计数递增1,调用 CloseHandle()函数“关闭”对象,会从进程的句柄表中删除该对象的句柄索引,对象的使用计数递减1,如果计数未递减至0,该对象不会被销毁,只有计数递减至0,说明对该对象的所有引用都已关闭,系统才会销毁该对象。然后系统底层会维护这个内核对象,当所有进程都没有引用这个内核对象的时候会释放掉。最后的出来的当量信号值为信号量。
一念微笑一念光
2016-01-12 · TA获得超过305个赞
知道小有建树答主
回答量:180
采纳率:0%
帮助的人:37.7万
展开全部
当前值是什么意思,要是指等待信号量的话
WaitForSingleObject
WaitForMultipleObjects
都行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
昼梦童话诗
2016-01-11 · TA获得超过3224个赞
知道小有建树答主
回答量:1586
采纳率:60%
帮助的人:237万
展开全部
要是指等待信号量的话
WaitForSingleObject
WaitForMultipleObjects
都行
信号和标记里有计数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
章三那拉惜寒
2020-08-05 · TA获得超过1186个赞
知道小有建树答主
回答量:333
采纳率:100%
帮助的人:6.3万
展开全部
共享内存可以被多个进程操作,这是我们的目的,也可以被多个进程同时操作,这是我们不希望看到的,为了避免这种情况,我们使用共享内存时需要配合信号量同时使用。
共享内存的使用,主要有以下几个api:
shmget()、shmat()、shmdt()及shmctl()。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式