看流星社区

 找回密码
 注册账号
查看: 1802|回复: 0

互斥体 实现进程间的通信

[复制链接]

该用户从未签到

发表于 2014-2-28 17:03:52 | 显示全部楼层 |阅读模式
HANDLE CreateMutex(
  LPSECURITY_ATTRIBUTES lpMutexAttributes,  // SD
  BOOL bInitialOwner,                       true  当前创建线程拥有该互斥体  false 当前创建线程不拥有
  LPCTSTR lpName                            // 对象的名字
);
typedef struct _SECURITY_ATTRIBUTES {
  DWORD  nLength;                                结构体的长度
  LPVOID lpSecurityDescriptor;                安全描述
  BOOL   bInheritHandle;                        窗口能否被继承
} SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES;

HANDLE OpenMutex(
  DWORD dwDesiredAccess,  // access        MUTEX_ALL_ACCESS 所有权限
  BOOL bInheritHandle,    // inheritance option        是否可以继承
  LPCTSTR lpName          // object name                CreateMutex  创建互斥体的名字
);

DWORD WaitForSingleObject(
  HANDLE hHandle,        // handle to object                create open 打开的句柄
  DWORD dwMilliseconds   // time-out interval                等待时间 毫秒计数    INFINITE 等待到永远
);
WAIT_ABANDONED        等待的对象是一个互斥对象,并且没有被它所在的线程释放。估计你有一个互斥对象,在线程退出时,没有释放。
互斥体现在没标识。
WAIT_OBJECT_0        获得了互斥体
WAIT_TIMEOUT        等待超时

BOOL ReleaseMutex(
  HANDLE hMutex   // handle to mutex
);

CloseHandle(hMutex);                        create  open  打开的句柄  不用的时间要关了

CreateMutex(NULL,false,"topdesk");   //创建互斥体
HANDLE h=OpenMutex(MUTEX_ALL_ACCESS,false,"topdesk"); //
if(WAIT_OBJECT_0==WaitForSingleObject(h,INFINITE))
{
  while(1)
  {
  }
}
ReleaseMutex(h);
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-14 11:27

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表