线程与同步

threading vs Synchronization

我有一段 C++ 代码运行了 20000 多次。该代码求解多个线性系统(矩阵),我正在努力优化此代码。我只是很困惑我是应该创建一个线程并在每次迭代中终止它,还是只在第一次迭代中创建线程并在其余迭代中在所有其他线程之间进行同步。为什么 way 更贵? 我在 C++ 中使用线程库,我打算使用信号量进行同步。

真的很难回答在这种特定情况下线程中什么更好。但是,由于线程 creation/destruction 的开销,最好在第一次迭代时创建线程并在整个计算序列之后终止它们。

另一个有趣的主题是多任务处理,您只需创建 tasks/jobs 即可计算部分数据。这很好,因为您会自动在 CPU 上获得计算平衡(但这取决于您的算法)。