游水上岸 發表於 2021-2-25 17:37:00

易语言 线程 原子锁 许可证 事件对象 信号量

<p>原子锁&nbsp; 不同的线程中 操作同一个数值 不受其他线程干扰 操作完成后其他线程可以操作数值</p>
<p>.版本 2</p>
<p>.DLL命令 原子递增变量, 整数型, , "InterlockedIncrement", , 参数+1<br>    .参数 累加的数值, 整数型, 传址, 需要+1的参数</p>
<p>.DLL命令 原子增加变量, 整数型, , "InterlockedExchangeAdd", , 参数增加自定义的值<br>    .参数 操作数, 整数型, 传址, 需要操作的参数<br>    .参数 欲增加的数字, 整数型, , 需要加的数 负数就是减</p>
<p>.DLL命令 原子递减变量, 整数型, , "InterlockedDecrement", , 参数-1<br>    .参数 递减的数值, 整数型, 传址, 需要-1的参数</p>
<p>===============================================================================</p>
<p>许可证&nbsp; 不同的线程中 操作同一段代码&nbsp;不受其他线程干扰 操作完成后其他线程可以操作代码 比如写文件 写数据 防止重复操作&nbsp; 仅读文件可以不用</p>
<p>多线程支持库-&gt;多线程控制</p>
<p>.版本 2</p>
<p>许可去证明 = 创建进入许可证 ()<br>进入许可区 (许可去证明)<br>退出许可区 (许可去证明)<br>删除进入许可证 (许可去证明)</p>
<p>===============================================================================</p>
<p>事件对象&nbsp; 内核级别 创建一个对象&nbsp; 3个功能&nbsp; 有信号 无信号 等待信号&nbsp; 有返回值&nbsp; 设计多个线程同步数据使用 排队之类的</p>
<p>.版本 2</p>
<p>.DLL命令 事件_创建事件对象, 整数型, "kernel32", "CreateEventA", 公开, 创建一个事件对象 如执行成功,返回事件对象句柄;零表示出错。<br>    .参数 安全结构, 整数型, , 安全结构。默认可不写,留0即可。**可0<br>    .参数 是否手动事件, 整数型, , 如果为真(1)则为手动重设。为假(0)则为自动重设事件。<br>    .参数 初始是否有信号, 整数型, , 该事件是否一开始就有信号。1有信号,0没信号。<br>    .参数 事件名称, 文本型, , 指定事件对象的名字。名字是用作多进程同步的,一般不使用。**可空</p>
<p>.DLL命令 事件_置为有信号, 整数型, "kernel32", "SetEvent", 公开<br>    .参数 事件对象句柄, 整数型</p>
<p>.DLL命令 事件_置为无信号, 整数型, "kernel32", "ResetEvent", 公开<br>    .参数 事件对象句柄, 整数型</p>
<p>.DLL命令 等待内核对象, 整数型, "kernel32", "WaitForSingleObject", 公开, 等待一个内核对象。超时返回258,等待成功返回0<br>    .参数 内核对象句柄, 整数型<br>    .参数 超时时间, 整数型, ,&nbsp;**超时时间 到时间没有信号返回 258&nbsp; &nbsp; ,-1 无限等待&nbsp;</p>
<p>&nbsp;</p>
<p>用法&nbsp; : 程序集_事件对象句柄 = 事件_创建事件对象 (0, 1, 1, “”)</p>
<p>&nbsp;</p>
<p>===============================================================================</p>
<p>&nbsp;</p>
<p>信号量&nbsp; 可以设置队列&nbsp; 线程队列&nbsp; 设置放行数量 比如设置3个 后面可以等待信号处会执行3次 3个信号用完 再有等待信号会卡住 知道添加一个信号 可以用于队列上面任务执行完成后在执行后面的</p>
<p>比如3个人(3个信号)正在搬3堆砖(3个代码段或线程,当前信号被用完 目前是0)&nbsp; 等第一个人搬完自己的砖后(第一个代码段或线程结束) 向工头示意后(信号+1) 工头安排第4堆砖 (有信号后继续后面代码或线程)</p>
<p>&nbsp;</p>
<p>.版本 2</p>
<p>.DLL命令 信号量_创建, 整数型, "kernel32", "CreateSemaphoreA", 公开, 创建一个新的信号机 如执行成功,返回信号机对象的句柄;零表示出错。会设置GetLastError。即使返回一个有效的句柄,但倘若它指出同名的一个信号机已经存在,那么GetLastError也会返回ERROR_ALREADY_EXISTS<br>    .参数 安全结构, 整数型, , 安全结构。默认可不写,留0即可。**可0<br>    .参数 信号量初始值, 整数型, , 设置信号机的初始计数<br>    .参数 信号量最大值, 整数型, , 设置信号机的最大计数<br>    .参数 信号量名字, 文本型, , 指定信号机对象的名称。名字是用作多进程同步的,一般不使用。**可空</p>
<p>.DLL命令 信号量_释放, 整数型, "kernel32", "ReleaseSemaphore", 公开, 释放信号量对象,释放之后,信号量会增加对应的数量**就叫释放 其实是加<br>    .参数 信号量句柄, 整数型<br>    .参数 释放的数量, 整数型, , **信号加几<br>    .参数 保留参数0, 整数型, , **不懂</p>
<p>.版本 2</p>
<p>.DLL命令 等待内核对象, 整数型, "kernel32", "WaitForSingleObject", 公开, 等待一个内核对象。超时返回258,等待成功返回0<br>    .参数 内核对象句柄, 整数型<br>    .参数 超时时间, 整数型, , **超时时间 到时间没有信号返回 258&nbsp; &nbsp; ,-1 无限等待&nbsp;</p>
<p>&nbsp;</p>
<p>程序集_信号量句柄 = 信号量_创建 (0, 1, 10, “”)</p>
<p>等待返回值 = 等待内核对象 (程序集_信号量句柄, 5000)</p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/xiaohuiji190/p/14448266.html
頁: [1]
查看完整版本: 易语言 线程 原子锁 许可证 事件对象 信号量