首页 > 其他 > 详细

自旋锁spinlock

时间:2014-01-17 15:15:19      阅读:445      评论:0      收藏:0      [点我收藏+]

1 在单处理器上的实现

单核系统上,不存在严格的并发,因此对资源的共享主要是多个任务分时运行造成的。

只要在某一时段,停止任务切换,就能够保证只有一个任务在运行。

这就是spinlock的实现机制。

   1: #define __LOCK(lock) \
   2:   do { preempt_disable(); __acquire(lock); (void)(lock); } while (0)
   1: #define _raw_spin_lock(lock)            __LOCK(lock)
   1: static inline void spin_lock(spinlock_t *lock)
   2: {
   3:     raw_spin_lock(&lock->rlock);
   4: }
   1: #define __UNLOCK(lock) \
   2:   do { preempt_enable(); __release(lock); (void)(lock); } while (0)

即基本上就是调用preempt_disable和preempt_enable。

自旋锁spinlock

原文:http://www.cnblogs.com/long123king/p/3523975.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!