[英]List of atomic shared pointers
我需要一个线程安全的共享指针列表,我看到在 c++20 中他们为原子共享_ptr 添加了模板特化。 ( std::atomic<std::shared_ptr<Delegate>>
)。
因此,我想知道我是否需要实现自己的双向链表,或者这就是我需要std::list<std::atomic<std::shared_ptr<Delegate>>>
来创建线程安全列表?
std::list<std::atomic<std::shared_ptr<Delegate>>>
是原子指针列表。 这意味着指针有一些线程安全保证。
它不是原子列表,与没有std::atomic
的相同结构相比,列表结构也没有任何额外的线程安全性。
因此,例如,如果您有两个线程持有对列表中元素的引用,那么其中一个线程修改指针而另一个线程读取它是安全的(读者将看到旧值或新值)。
但是,如果您在一个线程中修改列表(推送、弹出、清除等),同时在另一个线程中读取或修改它,这是未定义的行为。 为此,您可能希望使用不同的线程安全容器,或使用std::mutex
保护std::list
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.