易语言多线程操作模块

易语言 2020-08-20 13:14:27

易语言多线程操作模块

code = WaitForSingleObject (_读整数 (读写锁, #读写锁_写锁), 超时时间)
.如果真 (code = #WAIT_FAILED 或 code = #WAIT_TIMEOUT)
返回 (假)
.如果真结束
.如果真 (_读整数 (读写锁, #读写锁_读计数) ≠ 0)
code = 选择 (超时时间 ≠ 0, WaitForSingleObject (_读整数 (读写锁, #读写锁_读锁), 超时时间), #WAIT_TIMEOUT)
.如果真 (code = #WAIT_FAILED 或 code = #WAIT_TIMEOUT)
.如果真 (ReleaseMutex (_读整数 (读写锁, #读写锁_写锁)) = 0)
返回 (假)
.如果真结束
返回 (假)

.如果真 (等待数 > _读整数 (条件锁, #条件锁_唤醒数))
唤醒数 = 等待数 - _读整数 (条件锁, #条件锁_唤醒数)
_写整数 (条件锁, #条件锁_唤醒数, 等待数)
_写自增 (条件锁, #条件锁_产生数)
.如果真结束
LeaveCriticalSection (cs)
.如果真 (唤醒数 ≠ 0)
返回 (ReleaseSemaphore (_读整数 (条件锁, #条件锁_信号量), 唤醒数, 0) ≠ 0)