「ミューテックス」の版間の差分

削除された内容 追加された内容
編集の要約なし
編集の要約なし
50行目:
<code>System.Threading.Mutex</code>クラスを使う。
==== プロセス内(スレッド間)の場合 ====
<code>System.Threading.Monitor</code>クラスが用意されているが、このクラスを使用した言語組み込みの同期機能も用意されている。例えば[[C Sharp|C#]]では <code>lock</code> ステートメント、[[Microsoft Visual Basic .NET|Visual Basic .NET]]では <code>SyncLock</code> ステートメントで、クリティカルセクションを任意のロックオブジェクトにより相互排他ロックすることが可能である。ただし、<code>this</code>オブジェクトや<code>System.Type</code>インスタンスなど、ロックに使用してはいけないとされているオブジェクトもある<ref>[https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/lock-statement lock ステートメント - C# リファレンス | Microsoft Docs]</ref>。また、メソッド<!-- 「同期されたコード領域」はインスタンスメソッドだけでなく、クラスメソッドも対象。 -->全体を包含する場合は、<code>[MethodImplAttribute(MethodImplOptions.Synchronized)]</code>属性<ref>[https://docs.microsoft.com/ja-jp/dotnet/standard/threading/synchronizing-data-for-multithreading マルチスレッド処理のためのデータの同期 | Microsoft Docs]</ref>を適用することができる(Javaのsynchronizedメソッドに相当)。ただしC# 5.0/VB.NET 11で追加されたawait/Await演算子を含むコードブロックをlock/SyncLockでロックすることはできず、<code>System.Threading.SemaphoreSlim</code>クラスなどを使用する必要がある。
 
[[C++/CLI]]向けには[[RAII]]を応用した<code>msclr::lock</code>クラスが用意されている<ref>[https://docs.microsoft.com/ja-jp/cpp/dotnet/lock-class lock クラス | Microsoft Docs]</ref>。
73行目:
*[[セマフォ]]
*[[デッドロック]]
*[[スレッド (コンピュータ)|スレッド]]
<!--*[[マルチスレッド]]--><!-- 「スレッド (コンピュータ)」にリダイレクトされている。 -->
*[[プロセス]]
*[[マルチタスク]]