2013-05-02 60 views
0

在C++中的优点,我想创建具有以下结构的算法:是否有回收线程

  • 甲顺序部分
  • 甲平行部分A
  • 甲顺序部分
  • 甲平行部B
  • 甲顺序部分

使用pthrea ds,我可以想办法解决这个问题的两种方法:

  1. 为A部分创建N个线程,然后在部分A完成后破坏这些线程。然后为B部分分配N个新线程。
  2. 使用可用的各种同步方法为部件A和部件B使用相同的线程。

性能问题时需要多少开销为解决方案1创建新线程。我应该选择解决方案1还是解决方案2?

回答

1

并行框架,如OpenMP回收线程。这称为线程池,您可以在网站上找到有关这些信息的信息。这里有一个相关的文章:Thread Pool vs Thread Spawning

如果你真的关心性能,找出什么适合你的应用程序的最好方法是尝试两种方法并测量它们。

一般来说,如果你的处理任务很昂贵,并且如果你只是产生新的线程,代码更容易理解,那就这么做。

只是为了给论点涂一点颜色,看看这个帖子,我回答了前几天使用实验:Why are 50 threads faster than 4?