ここでは、このガイドで、C#プログラミングでMutexクラスを使用する方法を説明します。 C#プログラムでこのMutex()クラスを使用するさまざまな例を示します。 与えられた例をUbuntu20.04で実行します。
例1
このMutex()クラスを使用して例を実行します。 これらの例を実行するためにUbuntu20.04を使用しているため、このUbuntu 20.04のテキストエディターを開いてから、任意の名前のファイルを作成し、このファイルをファイル拡張子「.cs」で保存する必要があります。 次に、このファイルに次のコードを入力します。 また、この特定のプログラムの各行について、以下で詳しく説明します。
このC#コードの最初の行は、ライブラリである「using System」です。このライブラリを使用することで、C#コードのさまざまなクラスと関数を取得できます。 このライブラリを使用して、「Console」クラスと「WriteLine」関数を取得します。 キーワード「using」は、パラメータの受信に使用されます。 システム。 「スレッド化」は、タスクを生成し、クラスからオブジェクトを受け取るためのものです。 次に、「DemoMutex」という名前の名前空間をインポートします。 また、「プログラム」というクラスを作成しました。 「newMutex()」と等しい「mutex」というインスタンスを作成します。 「new」は、新しいインスタンスを作成するためのキーワードです。
次に、C#コードで「main」関数を呼び出します。 この「メイン」関数には、5つの異なるスレッドを作成するために使用される「for」ループがあります。 このループは「a」を「1」で初期化するため、ここでの条件は「a <= 5」です。これは、ループに5回の反復があるか、ループが5回繰り返されてスレッドが作成されることを意味します。 ループが実行され、条件が真になると、「a」の値が増加するたびに。 次に、「new」キーワードを使用して、「threadObj」という名前のThreadオブジェクトを作成します。 このループが実行されると、スレッドのオブジェクトが作成されます。 ここで、「a」の値に等しい「名前」を「threadobj」に付けます。 名前は「スレッド」として保存されます+aは「スレッド」を意味し、「a」の値は「a」がループ反復の値に依存します。
次に、「threadObj.Start()」があります。ここで、「Start()」を使用して「threadObj」の状態を実行状態に変更します。 この「for」ループの外側には、「Console.ReadKey()」があります。 これは、キーが押されるのを待つために使用されます。 この下に、「静的」である「DemoMutex」という名前のメソッドがあります。 この方法を使用して、「Mutex」を使用した同期を実装します。 「Console.WriteLine」は、その中に書かれたステートメントを印刷するためのものです。 この「Console.WriteLine」ステートメントの後に、「try」メソッドを使用します。
次に、「Console.WriteLine」ステートメントがあります。 出力を見ると、この「Console.WriteLine」が指定されたステートメントをどのように出力するかが明確になります。 「Thread.Sleep(2000)」は、ここでパラメータとして指定されている時間、現在のスレッドの実行を一時停止または一時停止するためのものです。 この後、再び「Console.WriteLine」ステートメントを使用します。 キーワード「keyword」を使用して、tryブロックに割り当てるリソース、またはtryステートメントがコントロールを離れるときに実行されるこの「finally」ブロック内のステートメントをクリーンアップします。 「finally」ステートメント内で、「ReleaseMutex」メソッドを呼び出します。このメソッドは、ブロックを解除して、実行しようとしている別のスレッドが実行を開始するために使用されます。
このコードの出力も下の画像に示します。 このコードが画面にどのように出力を与えるかを確認できます。 このコマンドを使用してコードをコンパイルします。コードにエラーがない場合は、exeファイルが作成されます。 この「exe」ファイルは、「mono」コマンドを使用して実行されます。 また、この「mono」コマンドを使用する場合は、ファイル名に「.exe」ファイル拡張子を付けてから、このコマンドを実行して出力を取得する必要があることに注意してください。
この出力では、1つのスレッドがクリティカルセクションに入りたいときに、他のスレッドも入りたいが、ミューテックスの「WaitOne()」関数を使用しているため、最初のスレッドが実行を完了するまで待機する必要があることがわかります。 このスレッドが実行を完了すると、次のスレッドが開始して実行を開始し、タスクの完了後に存在します。 これにより、次のスレッドが開始して実行を開始できます。 条件が真になるまで、同じ手順が繰り返されます。
例2
ここに、Mutex()メソッドを使用した別の図があります。 この概念を理解するために、この例を試してみましょう。
このC#コードで使用されているのと同じステートメントは、「usingSystem」と「System.Threading」です。 クラスは「MutexProgram」であり、このクラスでは、「new」キーワードを使用して、この下の「main」関数を呼び出すことにより、「mutex」という名前のMutexクラスのインスタンスを作成しました。 WaitOne()メソッドはロックを取得しようとします。 ミューテックスが使用できない場合、「WaitOne()」はブロックされ、使用可能になるまで待機します。 ここで制限時間も指定します。 「Mutexオブジェクト」でWaitOne()メソッドを呼び出し、Mutexを取得できずに制限時間が経過すると、WaitOneはfalseを返します。 falseが返されると、以下に記述されたステートメント「Console.WriteLine」ステートメントが実行されます。 そして、このステートメントは印刷に使用されます。
trueの場合、実行されたコードセクションである「Run()」関数に移動します。この関数は以下で定義されています。 「Run()」が終了すると、「finally」ブロックが実行され、「MutexRelease」を使用してミューテックスが解放されます。 この「MutexRelease」については、前のコードで説明しました。 ここで「Run()」関数を定義します。この関数では、「Console.WriteLine()」を使用してステートメントを出力し、最後に「Console.ReadLine()」を作成します。 この「Console.ReadLine」は、Enterキーが押されるまで完全な文字列を読み取るためにここにあります。
出力には「Run()」ステートメントのみが表示されます。これは、trueを返し、「Run()」に移動するためです。 これをもう一方の端末で同時に実行すると、もう一方の端末で、「Mutex」を取得しようとするときにifステートメント内に記述されたステートメントが表示されますが、「Mutex」はすでに別のアプリケーションを使用しています。 、したがって、「Mutex」がリリースされるのを待つ必要があります。
結論
このチュートリアルでは、C#プログラミングの「Mutex」について説明します。 ここでは2つの例を示し、この「Mutex」を使用して、この概念を理解できるようにします。 この「Mutex」クラスは、「WaitOne()」および「RealeaseMutex()」関数を提供します。 この「WaitOne()」はロックに使用され、「ReleaseMutex()」はタスクまたはスレッドのロックを解除するために使用されます。 例では両方の方法を使用し、これらすべてを詳細に説明します。 このガイドをよく読んだ後、この「Mutex」の概念を学び、プロジェクトでこの「Mutex」クラスを使用できるようになることを願っています。
The post C#Mutex appeared first on Gamingsym Japan.