2011-01-19 6 views
1

私は、複数のスレッドでアクセスできるクラスを持っています。作成できるクリティカルセクションの数に制限はありますか?

私は私がちょうどCCriticalSectionforにオブジェクトのいずれかのコピーを作成することができる場合、私は思っていたCCriticalSection

を使用する同時アクセスを持っていないことを確認する(私はおよそ100-1000、このオブジェクトを持つことができると思いますプログラム内の静的メンバーCCriticalSectionを作成し、これをすべてのオブジェクトに使用するのが最善でしょうか?

答えて

1

先立ちXP/Server 2003にあなたが不足する可能性がCRITICAL_SECTIONのカーネルオブジェクト(具体的には、CRITICAL_SECTIONに競合があった時に仲裁するために使用されたイベント)XP以降では、あなたの仮想アドレス空間で多くのことができるようになります。

0

確かに限界がありますが、1000は完璧です。 あなたの場合、私は静的メンバーがより良いと信じています。

余分なオブジェクトを作成することは、パフォーマンスの見込みから最後に行うべきことです。

0

Windowsはあなたが原因sizeof(CCriticalSection)またはsizeof(CriticalSection)よりもその消費より多くの内部デバッグ結合に(使用可能なメモリ以外に作成できるセクションの数に制限はありません。

0

スコープがInterlockedExchangeとInterlock ... familyファンクションを使用しない理由を「信号」に限定しますか?

関連する問題