1. 加mutex。由于现在的锁都是基于futex,无竞争时并不会切换上下文,效率还不错,最靠谱的方式。
2.用原子操作。原子操作在硬件上类似锁总线避免多核视图不一致,软件方面C++标准库中有各种memory_order,memory_order选的合适比mutex快。
3.延迟删除。保证真正删除数据时已经没有新的对数据的引用(因此唯一对被删除数据的引用就是正在执行删除的线程中的引用),避免了竞争。
时间: 2024-10-12 12:30:53
1. 加mutex。由于现在的锁都是基于futex,无竞争时并不会切换上下文,效率还不错,最靠谱的方式。
2.用原子操作。原子操作在硬件上类似锁总线避免多核视图不一致,软件方面C++标准库中有各种memory_order,memory_order选的合适比mutex快。
3.延迟删除。保证真正删除数据时已经没有新的对数据的引用(因此唯一对被删除数据的引用就是正在执行删除的线程中的引用),避免了竞争。