递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 229|回复: 6
打印 上一主题 下一主题

[视窗] 命名互斥锁

[复制链接]

87

主题

953

帖子

4907

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4907
跳转到指定楼层
楼主
发表于 4 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
别问 问就是用于多进程同步的~


<火山程序 类型 = "通常" 版本 = 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_互斥锁>);
    }

    #
}


回复

使用道具 举报

411

主题

2518

帖子

8306

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
8306
沙发
发表于 4 天前 来自手机 | 只看该作者
我是直接使用官方互斥锁稍微封装成一个类实现命名锁
回复

使用道具 举报

87

主题

953

帖子

4907

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4907
板凳
 楼主| 发表于 4 天前 | 只看该作者
shuimiao 发表于 2024-11-24 12:07
我是直接使用官方互斥锁稍微封装成一个类实现命名锁

这是微软现成的 省事
回复

使用道具 举报

411

主题

2518

帖子

8306

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
8306
地板
发表于 4 天前 | 只看该作者
我看你这个微软的命名锁好像每个类一个名称吗,那多个名称是不是要多个类,还要打开才能加锁。。看看我的https://bbs.voldp.com/thread-24206-1-1.html
回复

使用道具 举报

87

主题

953

帖子

4907

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4907
5#
 楼主| 发表于 4 天前 | 只看该作者
shuimiao 发表于 2024-11-24 15:00
我看你这个微软的命名锁好像每个类一个名称吗,那多个名称是不是要多个类,还要打开才能加锁。。看看我的ht ...

你这个是针对同一个进程的...不能多进程锁..不一样的..可以理解为 一个是线程锁 一个是进程锁
回复

使用道具 举报

411

主题

2518

帖子

8306

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
8306
6#
发表于 4 天前 来自手机 | 只看该作者
小蜗牛 发表于 2024-11-24 17:01
你这个是针对同一个进程的...不能多进程锁..不一样的..可以理解为 一个是线程锁 一个是进程锁
...

这样的话就有用,多进程锁不错
回复

使用道具 举报

87

主题

953

帖子

4907

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4907
7#
 楼主| 发表于 4 天前 | 只看该作者
shuimiao 发表于 2024-11-24 17:13
这样的话就有用,多进程锁不错

嗯..昨天看了你的进程通信..懒得写代码..然后发现有一点不适用..就只能自己撸了..
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-28 10:17 , Processed in 0.090699 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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