[E2EE文档2.x] 读写共享锁
读写共享锁 功能类似于 线程许可证。但是不同的地方是,针对读shuj 和 写shuj,它可以使用不同的锁和同步机制,从而能获得更出色的效率。
适用场景
需要在多线程环境里,并发访问相同shuj、对象时使用。
锁定读操作
读写共享锁 对象可实现多线程同时读取shuj。使用前请确认您要操作的shuj方式,不会更改任何shuj或对象属性。
.版本 2
.支持库 e2ee
.全局变量 _共享锁, 读写共享锁
.全局变量 全局变量1, 整数型
.子程序 锁定读操作, 整数型, , 线程安全的取回 全局变量1 的值
.局部变量 变量, 整数型
_共享锁.开始读 ()
变量 = 全局变量1 ' // 读取
_共享锁.结束读 ()
返回 (变量)
锁定写操作
多个线程同时执行写入操作时,会依次排队执行。同一时间只会存在一个线程执行写入操作。
写入操作作用域范围内,是允许读取操作的。
.版本 2
.支持库 e2ee
.子程序 锁定写操作, 整数型
.局部变量 变量, 整数型
' // 写入操作范围内是允许读取变量的
_共享锁.开始写 ()
全局变量1 = 全局变量1 + 1 ' // 写入
变量 = 全局变量1
_共享锁.结束写 ()
返回 (变量)
永远配对性
作用域开始和结束永远都是配对的。即:调用了 开始读/写() 方法,则调用 返回() 前都必须配对执行 结束读/写() 方法,不能遗漏。
.版本 2
.支持库 e2ee
.子程序 永远配对性
_共享锁.开始写 ()
.如果真 (全局变量1 > 3)
_共享锁.结束写 () ' // 跟 开始写 配对
返回 ()
.如果真结束
全局变量1 = 全局变量1 + 1
_共享锁.结束写 ()
如果在调用 开始读/写 后,任何 返回() 函数时漏掉了配对的 结束读/写 方法,都可能会直接导致线程死锁。
|