我正在寻找一种使用 boost 线程并行运行代码块而不创建工作函数或仿函数的方法。我想要类似于 OpenMP 的并行部分构造的东西:
#pragma omp parallel sections
{
#pragma omp section
{
... do some work
}
#pragma omp section
{
... do some more
}
}
有没有办法使用boost来完成这个?
如果您可以使用 C++11,则lambda表达式将很有用。(lambda 实际上是一种仿函数,但下面的代码看起来像 OpenMP 版本?)
#include <boost/thread.hpp>
{
boost::thread th1([&]() {
// ... do some work (thread#1)
});
boost::thread th2([&]() {
// ... do some more (thread#2)
});
// wait for two tasks completion
th1.join();
th2.join();
}
或thread_group
版本:
{
boost::thread_group pool;
pool.create_thread([&]() {
// ... do some work (thread#1)
});
pool.create_thread([&]() {
// ... do some more (thread#2)
});
// wait for two tasks completion
pool.join_all();
}