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

upd*_*liu 1 multithreading c++11 stdatomic

我需要一个可以同时读/写的消息deque.只写就好了

std::atomic<std::deque<Message>> queue;
Run Code Online (Sandbox Code Playgroud)

这是一个包装类,它有一个std::deque<Message> queue_和一个std::mutex mutex_as数据成员,并锁定mutex_之前转发任何操作queue_

Pup*_*ppy 6

绝对不.

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

您需要从可靠的来源(如Intel(TBB)或Microsoft(PPL))获取这些结构.Boost.Lockfree也有一些.