社区
进程/线程/DLL
帖子详情
Semaphore,我们可以ReleaseSemaphore,减1,有没有加1的函数?
darkread
2004-09-07 03:55:51
问题同上
...全文
747
6
打赏
收藏
Semaphore,我们可以ReleaseSemaphore,减1,有没有加1的函数?
问题同上
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
microyzy
2004-09-08
打赏
举报
回复
waitfor成功之后会减一
release应该是加一
oyljerry
2004-09-08
打赏
举报
回复
每增加一个线程对共享资源的访问,当前可用资源计数就会减1
通过ReleaseSemaphore是加一。
xdljf
2004-09-07
打赏
举报
回复
// 信号量对象句柄
HANDLE hSemaphore;
UINT ThreadProc15(LPVOID pParam)
{
// 试图进入信号量关口
WaitForSingleObject(hSemaphore, INFINITE);
// 线程任务处理
AfxMessageBox("线程一正在执行!");
// 释放信号量计数
ReleaseSemaphore(hSemaphore, 1, NULL);
return 0;
}
UINT ThreadProc16(LPVOID pParam)
{
// 试图进入信号量关口
WaitForSingleObject(hSemaphore, INFINITE);
// 线程任务处理
AfxMessageBox("线程二正在执行!");
// 释放信号量计数
ReleaseSemaphore(hSemaphore, 1, NULL);
return 0;
}
UINT ThreadProc17(LPVOID pParam)
{
// 试图进入信号量关口
WaitForSingleObject(hSemaphore, INFINITE);
// 线程任务处理
AfxMessageBox("线程三正在执行!");
// 释放信号量计数
ReleaseSemaphore(hSemaphore, 1, NULL);
return 0;
}
……
void CSample08View::OnSemaphore()
{
// 创建信号量对象
hSemaphore = CreateSemaphore(NULL, 2, 2, NULL);
// 开启线程
AfxBeginThread(ThreadProc15, NULL);
AfxBeginThread(ThreadProc16, NULL);
AfxBeginThread(ThreadProc17, NULL);
}
DentistryDoctor
2004-09-07
打赏
举报
回复
没有这样的API,但<windows核心编程>一书的10.2实现了一个反信标。
sunny2zhang
2004-09-07
打赏
举报
回复
waitfor....object是占用一(N)个信号,使可用信号-1(N)
sunny2zhang
2004-09-07
打赏
举报
回复
茫然??ReleaseSemaphore就是释放一个占用信号使可用信号+N 啊(N>=0)
多线程间同步之:信号量
Semaphore
在对信号量调用等待
函数
时,等待
函数
会检查信号量的当前资源计数,如果大于0(即信号量处于触发状态),
减
1后返回让调用线程继续执行。第三个参数表示名称,不同进程中的各线程可以通过名称来确保它们访问同一个信号量。第三个参数可以用来传出先前的资源计数,设为NULL表示不需要传出。第四个参数表示信号量的名称,传入NULL表示匿名信号量。第二个参数表示增
加
个数,必须大于0且不超过最大资源数量。第二个参数表示信号量句柄继承性,一般传入TRUE即可。可以看出来,信号量也可以解决线程之间的同步问题。
WinAPI之
Release
Semaphore
Release
Semaphore
功能按指定数量增
加
指定信号量对象的计数。语法C++BOOL WINAPI
Release
Semaphore
( _In_ HANDLE h
Semaphore
, _In_ LONG l
Release
Count, _Out_opt_ LPLONG lpPreviousCount);参数h
Semaphore
在]信号量对象的句柄。 Create...
Create
Semaphore
和
Release
Semaphore
函数
(转)
在开发软件的过程中,多线程的程序往往需要实现相互通讯,比如几个线程添
加
一个消息到队列里,而另一个线程在睡眠时,就需要唤醒那个线程来处理事情。在这其中,就需要使用到信号量来进行同步。Create
Semaphore
是创建信号量,
Release
Semaphore
是增
加
信号量。
函数
Create
Semaphore
和
Release
Semaphore
声明如下: WINBASEAPI __out H
Release
Semaphore
BOOL WINAPI
Release
Semaphore
( __in HANDLE h
Semaphore
, __in LONG l
Release
Count, __out_opt LPLONG lpPreviousCount );h
Semaphore
[in]
A handle to the
semaphore
object. The Create
Semaphore
or Open
Semaphore
function returns this hand
windows多线程(八) 信号量
Semaphore
如果你看到了这里,我就认为你已经对掌握了有关关键段 CriticalSection、互斥量Mutex和事件Event有关的内容,所以最基本的东西就不再介绍了。如果没有掌握上面说的内容,可以看这里: 关键段 CriticalSection 互斥量Mutex 事件Event 一、信号量相关
函数
说明 (一) 创建信号量Create
Semaphore
1.
函数
原型 HANDLE WINAP...
进程/线程/DLL
15,465
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章