ブロック解除アルゴリズムでマルチスレッドを使用しました。スレッドがない場合、30 ミリ秒実行されます。40 スレッドの場合、40 ミリ秒で実行されます。ただし、私の観察では、40ms のうち 20ms が WaitForSingleObject で使用されています。
知りたいのですが、WaitForSingleObject の回避策はありますか。
編集: 私の問題は 2 つのループで構成されています。2 番目のものは、最初のものの結果に依存します。各ループに 4 つのスレッドを使用します。各スレッドは、そのループのコンテンツの 4 分の 1 を実行します。
2 番目のループの次の 4 つのスレッドを開始する前に、最初のループの 4 つのスレッドが終了するのを待つ必要があります。
しかし、WaitForSingleObject には時間がかかりすぎると感じています。最も遅いスレッドのコストは 1 ~ 2 ミリ秒です。しかし、私の記録では、WaitFor singleObject は多少同じです。
スレッドがない場合、速度はほぼ同じか、場合によってはさらに遅くなります。したがって、私の場合、スレッド化は実際に高速化に役立ちますが、WaitForSingleObject は節約された時間をすべて使い果たし、プログラムを 1 つのスレッドと同じくらい遅くします。