C#のミューテックスとセマフォとは何ですか?どこに実装する必要がありますか?
マルチスレッドでそれらをどのように扱うことができますか?
あなたはMSDNから始めるべきです。
通常、Mutexはプロセス間でのみ使用します。複数のアプリケーションが共有する必要のあるリソースがある場合、または単一インスタンスのアプリを構築する場合(つまり、一度に1つのコピーのみを実行できるようにする場合)。
セマフォを使用すると、特定の数の同時スレッドへのアクセスを制限できるため、たとえば、一度に最大2つのスレッドで特定のコードパスを実行できます。
私はこれを読むことから始めます: http://www.albahari.com/threading/part2.aspx#_Synchronization_Essentials そして、投稿されたMSDNリンクbobbymcrでそれを強化します。
あなたはlockステートメントをチェックしたいかもしれません。 C#でスレッド同期タスクの大部分を処理できます
class Test {
private static object Lock = new object();
public function Synchronized()
{
lock(Lock)
{
// Only one thread at a time is able to enter this section
}
}
}
Lockステートメントは、Monitor.EnterおよびMonitor.Exitを呼び出すことによって実装されます。これは、次のコードと同等です。
Monitor.Enter(Lock);
try
{
// Only one thread at a time is able to enter this section
}
finally
{
Monitor.Exit(Lock);
}