我有一些通常运行良好的多线程代码,但它经常会中断。我试图查明问题,但使用 OpenMP 使这变得更加困难(问题不会在串行中发生)。我知道对变量(竞争条件)的多次访问经常会使程序崩溃。
我有一个在多个线程之间共享的列表,我很好奇该列表上的 push_back() 是否是竞争条件的候选者,因此每隔一段时间就会使我的程序崩溃?如果是这样,有没有关于如何处理这个问题的建议?
- 速度是最重要的
- 我知道 using#pragma omp critical
可以解决竞争条件,但可能会减慢应用程序的速度(有两个列表,所以我需要一个关键的而不是原子的)。
我不确定的唯一原因是因为我使用 stl 容器运行了几个测试,但从未让测试代码崩溃。
任何建议将不胜感激!
先感谢您,