2015-02-06 95 views
0

我有一个运行超过20000次的C++代码。该代码解决了多个线性系统(矩阵),我正致力于优化此代码。我只是困惑我是否应该创建一个线程并在每次迭代中杀死它,或者只是在第一次迭代期间创建线程,并在其余迭代期间在所有其他线程之间进行同步。为什么方式更昂贵? 我在C++中使用线程库,并计划使用Semaphore进行同步。线程vs同步

+3

最好的方法是:自己动手,回来告诉我们。也不要过早地优化,只有当你真的确定这个循环是你的瓶颈时,你是否应该优化它 – Creris 2015-02-06 13:06:34

+3

但我敢肯定创建一个线程并杀死它20000次是不是要走的路:) – Drax 2015-02-06 13:15:51

回答

1

在线程的这种特定情况下,真的很难回答什么更好。但是在第一次迭代中创建线程并在整个计算序列之后杀死它们是很好的做法,因为线程创建/销毁开销。

另一个营销主题是多任务处理,您只需创建包含部分数据的任务/作业即可进行计算。这很好,因为你可以在CPU上自动获得计算平衡(但这依赖于你的算法)。