为编程爱好者分享易语言教程源码的资源网

网站首页 > 易语言相关 > 易语言例程 正文

易语言跨进程锁 跨进程许可证源码

三叶资源网 2022-03-27 22:45:20 易语言例程 1521 ℃ 0 评论

易语言自带的许可证,应该是CriticalSection,(临界区)或(关键段),这是一个用户对象,不能实现跨进程加锁

跨进程加锁,就需要内核对象

QQ截图20220328224933 (1).jpg

sn_CreateMutex (0, 0, “独一无二的名字”)

创建一个命名互斥体,如果后续用同一个名字创建,会返回同一个


内核对象,不属于任何进程,不像用户对象,进程销毁了,关联的用户对象(窗口)就一定会销毁

每个内核对象内部有一个计数,归零的时候才会销毁,(打开就+1,关闭就-1)


每个内核对象,还有一个状态标识:信号量

ReleaseMutex,可以让一个Mutex,从无信号,变成有信号,(这个好像,有点反人类……字面意思反的)

WaitForSingleObject,可以等待一个对象,直到对象有信号才返回,同时会把这个对象,从有信号变成没有信号,这样其他线程就等不到了,直到ReleaseMutex


还可以通过下面的代码来禁止多开:

.版本 2
.支持库 spec

.程序集 窗口程序集_启动窗口
.程序集变量 hMtx, 整数型

.子程序 __启动窗口_创建完毕

hMtx = sn_CreateMutex (0, 0, “独一无二的名字”)
.如果 (sn_WaitForSingleObject (hMtx, 0) ≠ 0)
    信息框 (“禁止多开”, 0, , )
    结束 ()
.否则
    调试输出 (“允许运行”)
.如果结束


文件下载

Tags:

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
EXUI仿迅雷登陆界面AI文字转语音蚁群算法QQ资料照片墙上传客户端数据phpotoshopAES加密获取窗口内鼠标坐标模拟斗地主游戏易语言5.8socks4超级列表框背景透明Sign算法卷帘式菜单bilibili直播钓鱼炫彩界面信息框调试golang
最新评论