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

易语言自带的许可证,应该是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, , ) 结束 () .否则 调试输出 (“允许运行”) .如果结束
相关文件下载地址
©下载资源版权归作者所有;本站所有资源均来源于网络,仅供学习使用,请支持正版!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注