2

私はvector<HANDLE>です。私は彼らのすべてが終了するのを待っています。私はそれらを配列にコピーしたくありません。いずれにしても、WaitForSingleObjectをループで使用するのではなく、とにかくWaitForMultpleObjectsを使用する利点は何ですか?ループ内でWaitForSingleObjectの代わりにWaitForMultipleObjectsを使用する利点は何ですか?

ありがとうございます!

+1

WaitForMultipleObjects関数は、すべてのオブジェクトが終了するのを待つことができますが、WaitForSingleObjectは1つのオブジェクトが終了するのを待つだけです。どちらを使用するかは、必要な動作によって異なります。これ以上のことはありませんか? –

+0

'WaitForMultpleObjects()'では、1つずつ起こっているイベントを見ることもできます。 'WaitForSingleObject()'では、タイムアウトが最小に設定されていなければ、WaitFor * Object *()を効果的に劣化させるので無意味なものにならない限り、発生順にイベントを常に見ることはできませんポーリング。 –

答えて

2

私が知っているすべてのC++コンパイラでは、ベクトルは内部的には配列で、&yourvector[0]で配列へのポインタを得ることができます。 C++ 11では、この動作が標準でも必要と考えています。コピーする必要はありません。

利点としては、WaitForMultipleObjectsは目を覚ました回数を減らし、CPU時間をいくらか節約します。また、同時にHANDLEのすべてをアトミックに取得します。多量のミューテックスやセマフォオブジェクトがあり、すべてをロックする必要がある場合は、これが重要になります。

関連する問題