初心者の方ですが、どのようにスレッドしますか?関数をスレッド化するにはどうすればよいですか?
私はこのコードスニペットを持っている:
std::vector<std::thread*> threads[8];
for (unsigned short rowIndex = 0; rowIndex < unimportantStuff.rows; ++rowIndex)
{
for (unsigned short columnIndex = 0; columnIndex < unimportantStuff.columns; ++columnIndex)
{
myModelInstance = new CModelInstance;
myModelInstance->Init(myLoader.CreateTriangle(myFramework.myDevice, { -0.8f + unimportantStuff.offset*columnIndex, -0.8f + unimportantStuff.offset*rowIndex }), { -0.8f + unimportantStuff.offset*columnIndex, -0.8f + unimportantStuff.offset*rowIndex });
myScene.AddModelInstance(myModelInstance);
}
}
私は、しかし、私は継続する方法を可能わからない場合はInit関数とAddModelInstance機能の両方をスレッドにしたいです。複数のスレッドをアクティブにするにはどうすればよいですか(この場合は最大8個まで)。
私はこのような単一のスレッドで試してみました:
std::thread t1(myScene.AddModelInstance, myModelInstance);
しかし、私は次のエラーを取得:
CScene :: AddModelInstance ':非標準の構文を。 '&'を使用してメンバーへのポインタを作成します
&を機能と引数の両方に追加しようとしましたが、どちらも機能しませんでした。
スレッドへのポインタのベクトルの8つのベクトルの配列をしたくないと思います。あなたがスレッドのベクトルを望むなら、それは 'std :: vector' –
user463035818
になるでしょうなぜあなたはinit関数を持っていますか?それはコードのにおいです。コンストラクタを使用して、オブジェクトを初期化するように設計されています。 –
それを指摘してくれてありがとう。私はクラスメイトのコードを見たときに自分のコードに忍び込んでいます。私の教師はそれが業界のコード標準だと言いましたが、私はあなたの意見を見ます。 –