读写锁

来源:互联网 发布:卖淘宝号的网站 编辑:程序博客网 时间:2024/06/08 06:39

读写锁实际是一种特殊的 自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于 自旋锁而言,能提高 并发性,因为在 多处理器系统中,它允许同时有多个读者来访问共享资源,最大可能的读者数为实际的逻辑CPU数。写者是排他性的,一个读写锁同时只能有一个写者或多个读者(与CPU数相关),但不能同时既有读者又有写者。

在读写锁保持期间也是抢占失效的。

如果读写锁当前没有读者,也没有写者,那么写者可以立刻获得读写锁,否则它必须自旋在那里,直到没有任何写者或读者。如果读写锁没有写者,那么读者可以立即获得该读写锁,否则读者必须自旋在那里,直到写者释放该读写锁。

读写锁的实现:



实现结果:


接下来实现两种情况下的读写锁:

(1)读者读成功后,sleep 3秒,写者sleep 1秒,,因为读者在sleep,写者失败。


(2)写者成功后,sleep 3秒,1秒后读者到达,因为写者在sleep,读者失败。



原创粉丝点击