除了用于同步的锁定(自旋锁,信号量)之外的机制

时间:2014-07-31 21:45:46

标签: multithreading linux-kernel operating-system synchronization locking

我知道在c中同步有几种机制,如自旋锁,信号量,seq_lock,条件变量等,每个都有它的优点和缺点以及何时使用,这取决于情况。

但是上面的每个同步机制都会为程序添加一些额外的处理。

这是一个面试问题"除了锁定同步"之外还有其他方法吗?我说我们可以使用障碍或我们自己的wait_queue,但这可能是有用的,只有某些情况可能不在1或2中。

除了用于同步的锁定(自旋锁,信号量)之外,还有其他机制吗?

1 个答案:

答案 0 :(得分:0)

锁定在内核中很昂贵。除了上述内容之外,还有RCU:Read-Copy-Update,它分隔了更新和回收信息,读者和编写者都可以完全避免锁定。

它不是上述的完全替代品,因为它取决于您尝试序列化的内容。您还可以考虑使用per-cpu数据结构并避免全局昂贵的锁定,这仍然需要与ISR同步,同时必须禁用抢占。忘了在位和整数上添加原子操作。