WindowsのWin32APIの話、実験してないので予想で記述。
Vistaから使える
Vistaから使える。
クリティカルセクションに比べて早い
クリティカルセクションはリーダーとかライターの区別がないので、リーダーがたくさん動いていると大変になる場合がある。
ShareモードとExclusiveモードがある
同じロックに対してSharedモードで取得するかExclusiveモードで取得するか選択できる。Shareモードをロックした場合は次のShareモードロックも取得できるはず。Exclusiveはロックが全くない場合だけ取得できるはず。Exclusiveがロックされているときはどっちも取得できない。
再取得できない
クリティカルセクションは取得後に再取得できたがこれはできないらしい。小さなコードブロックで使いデッドロックしないように注意。
使い方
- InitializeSRWLockで初期化、またはSRWLOCK_INITを直接設定
- AcquireSRWLockSharedでShareモードロックを取得、ReleaseSRWLockSharedで開放
- AcquireSRWLockExclusiveでExclusiveモードロックを取得、ReleaseSRWLockExclusiveで開放