新しいスレッドで「実行」関数を呼び出そうとしています。今、私はこのコードを実際には新しいスレッドで "Run"を実行しないopenMPを使用しています。注:私はOpenMPを使用して助けを求めていません。このコードはちょうど簡単な修正でした。私はこれについて行くのCreateThread()メソッドを好むだろう。継承を使用したマルチスレッド化(C++)
vector<ICommand*>* commands;
string strInput;
// For each command...
for(vector<ICommand*>::iterator i = commands->begin(); i != commands->end(); ++i)
{
// ...if the current command we're examining is valid...
if((*i)->ContainsCommand(strInput))
{
// ...run it in a new thread and don't let ZChatInput handle it normally...
#pragma omp sections nowait
{
#pragma omp section
(*i)->Run(strInput);
#pragma omp section
bRet = false;
}
// ...and don't check any more commands.
break;
}
}
これは、標準とSTLだけを使用してどのように行われますか?もちろん、私は動作する方法を探しています:)
いいえ、ごめんなさい。私は第三者図書館から恥ずかしがるようにしています。この機能がVS2010にある場合は、試してみます。しかしそれまでは、私が探しているものではありません。また、strInputをパラメータとして渡すのを忘れてしまった。 –
ブーストの問題は何ですか?これはstlとほぼ同じように標準です。多くのブーストライブラリが新しい標準に入り、ブーストスレッドが新しい標準になると私は感心しません(私はスレッドの新しい標準があることを知っていますが、それらがブーストスレッドに似ているかどうかはわかりませんモデル) –
C++ 0xにはboost.threadに似たスレッド機能があります。参照してくださいhttp://en.wikipedia.org/wiki/C%2B%2B0x#Threading_facilities –