产生新线程的最小工作量

时间:2015-04-17 07:39:22

标签: c++ multithreading c++11 stdthread

如何估算产生新线程的最低工作量?我主要对C ++ 11 std::thread感兴趣。

长解释。我试图加速我们的应用程序,所以我继续并行化一个低级函数,在循环中执行极少数和简单的操作(例如不等式和赋值)。但是,此功能在应用程序中是最耗时的。因此,我试图并行化循环,为循环的两个连续索引生成两个线程,但是这会导致性能下降(我无法准确地说减速因子,但它可能大约是100倍)。

1 个答案:

答案 0 :(得分:1)

产生新线程通常是一项昂贵的操作(在Windows中可能更多,在Linux中更便宜)。一种替代方法是使用线程池设计模式。这使得重用现有线程成为可能,而无需一直创建/销毁它们。

如果没有关于应用程序运行的已使用体系结构和环境的额外知识,使用多线程有利可图时的最小工作量很难评估。有些经验或实验会很有用。