我知道在c中同步有几种机制,像自旋锁,信号量,seq_lock,条件变量等等,每种机制都有它的优缺点,以及什么时候使用取决于情况。
但是上面的每一种同步机制都会给程序增加一些额外的处理。
这是一个面试问题:除了锁定同步之外,还有其他方法吗?我说过我们可以使用障碍或我们自己的wait_queue,但这可能只在某些情况下有用,在某些情况下可能不是在1或2中。
那么,除了锁定(自旋锁、信号量)之外,还有什么机制可以实现同步吗?
发布于 2014-08-01 10:57:53
在内核中,锁的开销很大。除了上述功能之外,还有RCU: Read-Copy-Update,它将更新和回收信息分开,其中读取器和写入器都可以避免完全锁定。
它不是上述方法的完全替代,因为它取决于您尝试序列化的内容。您还可以考虑使用每个cpu的数据结构并避免全局昂贵的锁,这仍然需要与ISR同步,同时必须禁用抢占。忘记在位和整数上添加原子操作。
https://stackoverflow.com/questions/25069463
复制相似问题