read-write locker的实现# JobHunting - 待字闺中
j*y
1 楼
感觉是不是要有两个 counter c1 和 c2
c1 用于记录当下多少个 read 的 thread
c2用于 handle write的操作
c2有两个值0, 1
c2 = 0表示当前没有 thread 要 write
c2 = 1表示当前有 thread 想 要 write,那么这个时候想要读的thread必须 wait
当c1变成0后,也就是所有的 read threads release了这个 lock以后,那个设置 c2
为 1的 write线程就可以write了,write 完了以后就把 c2设置为0
c1 用于记录当下多少个 read 的 thread
c2用于 handle write的操作
c2有两个值0, 1
c2 = 0表示当前没有 thread 要 write
c2 = 1表示当前有 thread 想 要 write,那么这个时候想要读的thread必须 wait
当c1变成0后,也就是所有的 read threads release了这个 lock以后,那个设置 c2
为 1的 write线程就可以write了,write 完了以后就把 c2设置为0