递归火山软件开发平台

标题: 命名互斥锁 [打印本页]

作者: 小蜗牛    时间: 13 小时前
标题: 命名互斥锁
别问 问就是用于多进程同步的~


<火山程序 类型 = "通常" 版本 = 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    时间: 1 小时前
我是直接使用官方互斥锁稍微封装成一个类实现命名锁




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4