繁体   English   中英

简单的C ++容器类,对于写入是线程安全的

[英]Simple C++ container class that is thread-safe for writing

我正在使用C ++中的OpenMP编写一个多线程程序。 有一次,我的程序分成许多线程,每个线程都需要将“作业”添加到某个容器中,以跟踪所有添加的作业。 每个作业都可以是指向某个对象的指针。

基本上,我只需要同时从几个线程添加指向某个容器的指针。

有一个表现良好的简单解决方案吗? 经过一些谷歌搜索,我发现STL容器不是线程安全的。 一些stackoverflow线程解决了这个问题,但没有一个在简单的解决方案上形成共识。

没有内置的方法来做到这一点。 您可以简单地使用锁来保护现有容器类型之一。 让每个线程使用它自己的容器,然后将结果最终组合在一起可能是一个更好的主意。

使用互斥或​​类似的同步原语来控制对链表的访问并不是很困难,所以我建议你先尝试一下。

如果它执行得太差而无法使用它,请尝试这样做:给每个线程自己的作业队列,并让作业消费者依次检查所有队列。 这样每个队列只有一个读者和一个编写器,因此无锁实现相对简单。 我的意思是它可能适用于您的平台; 你不应该试图自己写。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM