在回答上面的问题时,得先弄明白两个概念,什么是自旋锁,什么是互斥锁。
自旋锁
如果让等待锁的线程处于忙等状态,一直消耗cpu资源,这种锁就叫做自旋锁。
自旋锁的代表:OSSpinLock
互斥锁
如果让等待锁的线程进入休眠状态,这种锁就叫做互斥锁。
互斥锁的代表:pthread_mutex
什么时候使用自旋锁比较划算?
1.线程等待锁的时间短
2.加锁的代码(临界区)频繁被访问,竞争不激烈
3.cpu资源不紧张
4.多核处理器
什么时候使用互斥锁比较划算?
1.线程等待锁的时间较长
2.单核处理器
3.临界区有IO操作
4.临界区操作复杂或者有大量循环
5.临界区竞争非常激烈
网友评论