自旋锁与互斥锁

互斥锁,就是悲观锁,保证一个线程进去。线程会从sleep(加锁)--》runng(解锁) ,过程中有上下文的切换,cpu的抢占,信号的发送等开销。

自旋锁:线程一直都是running(加锁--》解锁),死循环检测锁位的标志位,机制不复杂。

自旋锁:由于自旋锁使用者一般保持锁时间非常短,因此选择自旋锁而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。

如何自旋?什么是自旋? 就是如果发现锁定了,不是睡眠等待,而是采用当前线程不停地在循环体内执行实现的,当循环的条件被其他线程改变时,才能进入临界区。

猜你喜欢

转载自www.cnblogs.com/toov5/p/9858778.html