读写锁模块可用于多线程的公共数据修改

易语言 2020-07-15 18:29:36

.程序集 读写锁, , 公开
.程序集变量 读锁, 许可证
.程序集变量 写锁, 许可证
.程序集变量 状态, , , , 0 空白 1 读 2 写
.程序集变量 次数

读写锁是“写模式加锁”时, 解锁前,所有对该锁加锁的线程都会被阻塞。
读写锁是“读模式加锁”时, 如果线程以读模式对其加锁会成功;如果线程以写模式加锁会阻塞。
读写锁是“读模式加锁”时, 既有试图以写模式加锁的线程,也有试图以读模式加锁的线程。那么读写锁会阻塞随后的读模式锁请求。优先满足写模式锁。读锁、写锁并行阻塞,写锁优先级高
读写锁也叫共享-独占锁。当读写锁以读模式锁住时,它是以共享模式锁住的;当它以写模式锁住时,它是以独占模式锁住的。写独占、读共享。