互斥锁vs共享锁vs自旋锁

共享锁:如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁,直到已释放所有共享锁。获准共享锁的事务只能读数据,不能修改数据。


排他锁:如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的锁,直到在事务的末尾将资源上的锁释放为止。获准排他锁的事务既能读数据,又能修改数据。

linux 自旋锁: 进程运行是会锁住自己所拥有的资源,不让其他进程来破坏(即自己锁住自己).但是如果是单处理器的系统,会出现其他的进程请求自己所拥有的资源,不断的查询资源是否可用,占用了CPU的资源,而自己也会应为竞争不到CPU而处于就绪,这种状态会一直保持.所以自旋锁一般不用于单处理器的系统.

你可能感兴趣的:(互斥锁vs共享锁vs自旋锁)