使用std :: atomic在C ++ 11中编写一个线程安全的deque

时间:2014-01-28 22:09:59

标签: multithreading c++11 stdatomic

我需要一个可以同时读/写的消息deque。仅写

就足够了
std::atomic<std::deque<Message>> queue;

对于具有std::deque<Message> queue_std::mutex mutex_作为数据成员的包装类是否相同,并且在将任何操作转发到mutex_之前锁定queue_

1 个答案:

答案 0 :(得分:6)

绝对不是。

这是非常不安全的。长期和短期是创建安全的高性能并发数据结构是令人难以置信的复杂,距离“Just lock a mutex every access”一百万英里。创建自己的产品需要数年或数十年的时间。 API设计与标准容器完全不同,仅适用于初学者。

您需要从可靠的来源(如英特尔(TBB)或微软(PPL))获取这些结构。 Boost.Lockfree也有一些。