多线程同步的几种方法

1. 互斥锁mutex。由于现在的锁都是基于futex,无竞争时并不会切换上下文,效率还不错,最靠谱的方式。

2.读写锁。读多写少的情况下性能优于互斥锁,但也有个问题,大量读锁可能让需要写锁的操作hang住。

3.原子操作。原子操作在硬件上类似锁总线避免多核视图不一致,软件方面C++标准库中有各种memory_order,memory_order选的合适比mutex快。

4.延迟删除。保证真正删除数据时已经没有新的对数据的引用(因此唯一对被删除数据的引用就是正在执行删除的线程中的引用),避免了竞争。

5.RCU,read copy update的简称,了解的不多。

 

posted @ 2016-03-27 19:20  farseeraliens  阅读(137)  评论(0编辑  收藏  举报