0

私は現在 WinAPI で遊んでいて、スレッドに進みました。私のプログラムにはn、互いに連携するスレッドがあります。特定のメモリ位置にデータを書き込み、特定のメモリ位置で動作するスレッドがデータを処理するまで待機するメインスレッドが 1 つあります。次に、スレッドを終了することなく、手順全体が再び繰り返されます。

私の問題は、2 番目のスレッドを待つのに時間がかかりすぎることです。現在のスレッドを一時停止する (別のスレッドの時間を残す) 方法や、この問題を別の方法で解決する方法はありますか?

助けてください。

4

2 に答える 2

1

同期にはミューテックス、セマフォ イベントなどの同期オブジェクトを使用し、スレッド待機には WaitForSingleObject/WaitForMultipleObject API を使用できます。

于 2013-05-22T14:36:27.083 に答える
1

現在、メインスレッドでポーリング/ビジー待機中であり、ワーカースレッドが設定する完了フラグの状態を常にチェックしていると思います。お気づきのように、ワーカーが完了するのを待っているだけで CPU 帯域幅の一部を使用するため、これは望ましくありません。場合によっては、これによりワーカーが予定されている時間が短縮され、完了が遅れます。

これを行う代わりに、 EventSemaphoreなどの同期オブジェクトを使用して、ワーカーが完了を通知するまでメイン スレッドをスリープ状態にすることができます。

于 2013-05-22T14:38:57.010 に答える