命名互斥锁
别问 问就是用于多进程同步的~<火山程序 类型 = "通常" 版本 = 1 />
类 命名互斥锁 <公开 折叠>
{
变量 m_互斥锁 <类型 = 变整数>
方法 类_清理
{
如果 (m_互斥锁 != 0)
{
@ CloseHandle((HANDLE)@<m_互斥锁>);
}
}
方法 创建互斥锁 <公开 类型 = 逻辑型 注释 = "主进程!">
参数 名称 <类型 = 文本型 注释 = "Global\\\\MyMutexName">
{
变量 _名称 <类型 = 文本型>
_名称 = "Global\\" + 名称
@ @<m_互斥锁> = (INT_P)CreateMutex(NULL, FALSE, @<_名称>.GetText());
如果 (m_互斥锁 == 0)
{
返回 (假)
}
否则
{
返回 (真)
}
}
方法 打开互斥锁 <公开 类型 = 逻辑型 注释 = "第三方进程">
参数 名称 <类型 = 文本型 注释 = "Global\\\\MyMutexName">
{
变量 _名称 <类型 = 文本型>
_名称 = "Global\\" + 名称
@ @<m_互斥锁> = (INT_P)OpenMutex(MUTEX_ALL_ACCESS, FALSE, @<_名称>.GetText());
返回 (m_互斥锁 != 0)
}
方法 加锁 <公开>
{
@ WaitForSingleObject((HANDLE)@<m_互斥锁>, INFINITE);
}
方法 解锁 <公开 类型 = 逻辑型 @禁止流程检查 = 真>
{
@ return ReleaseMutex((HANDLE)@<m_互斥锁>);
}
#
}
我是直接使用官方互斥锁稍微封装成一个类实现命名锁 shuimiao 发表于 2024-11-24 12:07
我是直接使用官方互斥锁稍微封装成一个类实现命名锁
这是微软现成的 省事 我看你这个微软的命名锁好像每个类一个名称吗,那多个名称是不是要多个类,还要打开才能加锁。。看看我的https://bbs.voldp.com/thread-24206-1-1.html shuimiao 发表于 2024-11-24 15:00
我看你这个微软的命名锁好像每个类一个名称吗,那多个名称是不是要多个类,还要打开才能加锁。。看看我的ht ...
你这个是针对同一个进程的...不能多进程锁..不一样的..可以理解为 一个是线程锁 一个是进程锁
小蜗牛 发表于 2024-11-24 17:01
你这个是针对同一个进程的...不能多进程锁..不一样的..可以理解为 一个是线程锁 一个是进程锁
...
这样的话就有用,多进程锁不错 shuimiao 发表于 2024-11-24 17:13
这样的话就有用,多进程锁不错
嗯..昨天看了你的进程通信..懒得写代码..然后发现有一点不适用..就只能自己撸了..
页:
[1]