spinlock和mutex对比
2014-08-26 08:36
141 查看
spinlock介绍:
spinlock又称自旋锁,线程通过busy-wait-loop的方式来获取锁,任时刻只有一个线程能够获得锁,其他线程忙等待直到获得锁。spinlock在多处理器多线程环境的场景中有很广泛的使用,一般要求使用spinlock的临界区尽量简短,这样获取的锁可以尽快释放,以满足其他忙等的线程。Spinlock和mutex不同,spinlock不会导致线程的状态切换(用户态->内核态),但是spinlock使用不当(如临界区执行时间过长)会导致cpu busy飙高。
spinlock不会使线程状态发生切换,mutex在获取不到锁的时候会选择sleep。
关于mutex:
mutex获取锁分为两阶段,第一阶段在用户态采用spinlock锁总线的方式获取一次锁,如果成功立即返回;否则进入第二阶段,调用系统的futex锁去sleep,当锁可用后被唤醒,继续竞争锁。
对比:
Spinlock优点:没有昂贵的系统调用,一直处于用户态,执行速度快。
Spinlock缺点:一直占用cpu,而且在执行过程中还会锁bus总线,锁总线时其他处理器不能使用总线。
Mutex优点:不会忙等,得不到锁会sleep。
Mutex缺点:sleep时会陷入到内核态,需要昂贵的系统调用。
Spinlock使用准则:
临界区尽量简短,控制在100行代码以内,不要有显式或者隐式的系统调用,调用的函数也尽量简短。例如,不要在临界区中调用read,write,open等会产生系统调用的函数,也不要去sleep;strcpy,memcpy等函数慎用,依赖于数据的大小。
spinlock介绍:
spinlock又称自旋锁,线程通过busy-wait-loop的方式来获取锁,任时刻只有一个线程能够获得锁,其他线程忙等待直到获得锁。spinlock在多处理器多线程环境的场景中有很广泛的使用,一般要求使用spinlock的临界区尽量简短,这样获取的锁可以尽快释放,以满足其他忙等的线程。Spinlock和mutex不同,spinlock不会导致线程的状态切换(用户态->内核态),但是spinlock使用不当(如临界区执行时间过长)会导致cpu busy飙高。
spinlock不会使线程状态发生切换,mutex在获取不到锁的时候会选择sleep。
关于mutex:
mutex获取锁分为两阶段,第一阶段在用户态采用spinlock锁总线的方式获取一次锁,如果成功立即返回;否则进入第二阶段,调用系统的futex锁去sleep,当锁可用后被唤醒,继续竞争锁。
对比:
Spinlock优点:没有昂贵的系统调用,一直处于用户态,执行速度快。
Spinlock缺点:一直占用cpu,而且在执行过程中还会锁bus总线,锁总线时其他处理器不能使用总线。
Mutex优点:不会忙等,得不到锁会sleep。
Mutex缺点:sleep时会陷入到内核态,需要昂贵的系统调用。
Spinlock使用准则:
临界区尽量简短,控制在100行代码以内,不要有显式或者隐式的系统调用,调用的函数也尽量简短。例如,不要在临界区中调用read,write,open等会产生系统调用的函数,也不要去sleep;strcpy,memcpy等函数慎用,依赖于数据的大小。
相关文章推荐
- mutex 和 spinlock 对比
- mutex 和 spinlock 对比
- mutex 和 spinlock 对比
- mutex 和 spinlock 对比
- mutex 和 spinlock 对比
- pthread_spinlock_t与pthread_mutex_t性能对比
- spinlock与mutex对比
- mutex 和 spinlock 对比
- linux c pthread_mutex_lock和pthread_mutex_trylock对比
- Pthread_Mutex_t Vs Pthread_Spinlock_t (转载)
- gcc原子操作与spinlock简单对比
- Pthreads并行编程之spin lock与mutex性能对比分析
- Mutex, semaphore, spinlock的深度解析
- Linux中的spinlock和mutex
- Pthread_Mutex_t Vs Pthread_Spinlock_t (转载)
- Pthreads并行编程之spin lock与mutex性能对比分析(转)
- 内核同步措施(spinlock与mutex)
- spinlock,mutex,semaphore,critical section的作用与差别
- Pthreads并行编程之spin lock与mutex性能对比分析
- spinlock,mutex,semaphore,vitical section的作用与区别