曲径通幽论坛

标题: 自旋锁与顺序锁| spinlock_t, seqlock_t [打印本页]

作者: beyes    时间: 2011-4-14 16:51
标题: 自旋锁与顺序锁| spinlock_t, seqlock_t
内核:2.6.32
平台:x86 32位
spinlock_t 是自旋锁类型,定义为:
[C++] 纯文本查看 复制代码
typedef struct {
        raw_spinlock_t raw_lock;
#ifdef CONFIG_GENERIC_LOCKBREAK
        unsigned int break_lock;
#endif
#ifdef CONFIG_DEBUG_SPINLOCK
        unsigned int magic, owner_cpu;
        void *owner;
#endif
#ifdef CONFIG_DEBUG_LOCK_ALLOC
        struct lockdep_map dep_map;
#endif
} spinlock_t;

虽然上面有许多开关,但是在一般默认安装的 linux,只有定义 raw_spinlock_t raw_lock; 这一项,所以这会简化了分析。

seqlock_t 是顺序锁类型,定义为:
[C++] 纯文本查看 复制代码
typedef struct {
    unsigned sequence;
    spinlock_t lock;
} seqlock_t;

顺序锁和自旋锁非常相似,从结构成员中可以看到多了一个变量 sequence ,它是为写者赋予了较高的优先级。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2