最終更新:2018-05-07 (月) 15:26:56 (2179d)  

C♯/スレッド/同期
Top / C♯ / スレッド / 同期

public class TestThreading
{
    private System.Object lockThis = new System.Object();

    public void Process()
    {

        lock (lockThis)
        {
            // Access thread-sensitive resources.
        }
    }

}

クリティカルセクション

System.Threading.Monitor

lock

  • Monitor.Enter?/Monitor.Exit? + try-finally?

待機ハンドル?

  • 待機ハンドル?をどのスレッドも所有していなければ「シグナル状態」、所有していれば「非シグナル状態?

メモ

  • インスタンスメソッドのロックにはthis、静的メソッドのロックにはType?オブジェクト(typeof)を使用するというのが、MSDNの「C# プログラマーズ リファレンス」などで推奨されている方法だが、thisType?オブジェクトはクラス外からでも取得できるので、クラスの設計者が意図しないところでこれらのオブジェクトがロックに使用される可能性がある
  • ロックに使用するオブジェクトは、privateフィールドとしてロック専用に作成し、読み取り専用にするのが最もよい方法です。
  • readonly
  • https://codezine.jp/article/detail/135?p=2