プロセス内(スレッド間)の場合
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/02/25 08:41 UTC 版)
「ミューテックス」の記事における「プロセス内(スレッド間)の場合」の解説
プロセス間でミューテックスを共有する必要がない場合は、以下の方法がある。 Critical Section - クリティカルセクションオブジェクトを使う。初期化にはInitializeCriticalSection()Win32 API関数を使う。Mutexより高速である。 Mutex - 無名のミューテックスオブジェクトを使う。 MFCにはC++のコンストラクタ/デストラクタによるRAII機構を利用した、Win32同期オブジェクトのラッパークラスが用意されている。
※この「プロセス内(スレッド間)の場合」の解説は、「ミューテックス」の解説の一部です。
「プロセス内(スレッド間)の場合」を含む「ミューテックス」の記事については、「ミューテックス」の概要を参照ください。
プロセス内(スレッド間)の場合
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/02/25 08:41 UTC 版)
「ミューテックス」の記事における「プロセス内(スレッド間)の場合」の解説
System.Threading.Monitorクラスが用意されているが、このクラスを使用した言語組み込みの同期機能も用意されている。例えばC#では lock ステートメント、Visual Basic .NETでは SyncLock ステートメントで、クリティカルセクションを任意のロックオブジェクトにより相互排他ロックすることが可能である。ただし、thisオブジェクトやSystem.Typeインスタンスなど、ロックに使用してはいけないとされているオブジェクトもある。また、メソッド全体を包含する場合は、[MethodImplAttribute(MethodImplOptions.Synchronized)]属性を適用することができる(Javaのsynchronizedメソッドに相当)。ただしC# 5.0/VB.NET 11で追加されたawait/Await演算子を含むコードブロックをlock/SyncLockでロックすることはできず、System.Threading.SemaphoreSlimクラスなどを使用する必要がある。 C++/CLI向けにはRAIIを応用したmsclr::lockクラスが用意されている。
※この「プロセス内(スレッド間)の場合」の解説は、「ミューテックス」の解説の一部です。
「プロセス内(スレッド間)の場合」を含む「ミューテックス」の記事については、「ミューテックス」の概要を参照ください。
- プロセス内の場合のページへのリンク