关于 Mutex

cqa 2001-06-21 06:31:00

在进程 A 中
HANDLE hMutex =CreateMutex(NULL,FALSE,"Mutex for XXX");
if(hMutex)
{
...
}
...
CloseHandle(hMutex);

进程 B:
HANDLE hMutex =CreateMutex(NULL,FALSE,"Mutex for XXX");
......
此时,A中 hMutex 还没有 CloseHandle(hMutex);
这里应该返回 A中的那个 hMutex,当 B 新建了一个。

那里有问题?

...全文
182 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
netsong 2001-06-22
  • 打赏
  • 举报
回复
是要建立A、B线程的互斥量嘛?怎么能在各自的线程内部建呢?要用两个线程公用的
admireO 2001-06-22
  • 打赏
  • 举报
回复
你能保证你的A还没CloseHandle()吗?最好是用GetLastError()判断一下
xcex 2001-06-22
  • 打赏
  • 举报
回复
???
lvfengxun 2001-06-22
  • 打赏
  • 举报
回复
不解
完全两个不同的Mutex,没有任何关系.
不知你要问什么?
Sunny_lin 2001-06-22
  • 打赏
  • 举报
回复
看看MSDN,实在不行了可以用CMutex类!!
MyKylix 2001-06-22
  • 打赏
  • 举报
回复
搞什么啊?
Acely 2001-06-22
  • 打赏
  • 举报
回复
if (GetLastError()=AFX_ALREADT_EXIST)
return;
huangbeyond 2001-06-22
  • 打赏
  • 举报
回复
呵呵,对于像Mutex 一类的内核对象,
如果是初次建立(那么使用计数为1),那么是新建;
如果建立的时候,已经有同名的对象存在,那么,
就不是重建,而是把这个Mutex 的使用计数加1;
而当使用(或创建)这个Mutex 的进程结束时,系统自动将使用计数减1,
当使用次数减为0的时候,系统才真正注销这个对象。

对CreateMutex()函数的返回值,请查阅MSDN,
当然,使用重名建立内核对象,一般是使用于进程运行的唯一。
zeroweb 2001-06-22
  • 打赏
  • 举报
回复
没听明白

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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