顺序锁是对读写锁的一种优化,只是为写者赋予更高的优先级。
1.读执行单元绝对不会被写执行单元阻塞。即读执行单元可以在写执行单元对被顺序锁保护的共享资源进行写操作的同时仍然可以继续读,而不必等待写执行单元完成之后再去读,同样,写执行单元也不必等待所有的读执行单元读完之后才去进行写操作
2.写执行单元与写执行单元之间仍然是互斥的。
3.如果读执行单元在读操作期间,写执行单元已经发生了写操作,那么,读执行单元必须重新去读数据,以便确保读到的数据是完整的。
4.要求共享资源中不能含有指针。
注意:
1.顺序锁:允许读和写操作之间的并发,也允许读与读操作之间的并发,但写与写操作之间只能是互斥的、串行的。
2.读写自旋锁:只允许读操作与读操作之间的并发,而读与写操作,写与写操作之间只能是互斥的、串行的。
3.自旋锁:不允许任何操作之间并发。
优点:写者永远不用等待
缺点:读者可能需要多次读相同的数据直到获得有效的副本
读者进入临界区时,不必禁用内核抢占,而写者由于获取自旋锁,所以它进入临界区时自动禁止内核抢占。
原文地址:http://muyunzhe.blog.51cto.com/9164050/1659564