多くの amd64 プロセッサと Debian Squeeze を備えた仮想マシン コンピューター クラスターで作業しています。以前は、(GNU Parallel を使用して) シェル スクリプトを並列で正常に実行しました。それでは、boost::threads を使用したいと思います。私はこのプログラムを実行します:
#include <boost/thread.hpp>
using namespace std;
boost::thread_group g;
void foo()
{
for(int i = 0; i < 1000000000; ++i)
for(int i = 0; i < 1000000000; ++i);
}
int main(int argc, char* argv[])
{
g.add_thread(new boost::thread(foo));
g.add_thread(new boost::thread(foo));
g.add_thread(new boost::thread(foo));
g.join_all();
}
これらのスレッドはすべて単一のプロセッサで実行され、300% (top
コマンドによると) 使用されます。これら 3 つのスレッドを 3 つの別々のプロセッサで実行するにはどうすればよいでしょうか? ブースト::スレッドで可能ですか?
注: このマルチプロセッサ Boost::Thread? タイトルにかかわらず、 1 つのプロセッサで実行されるすべてのスレッドはマルチコア システムに関するものですが、私のスレッドは真にマルチプロセッサ システムに関するものです。