私はクラスからいくつかのオブジェクトを構築しており、これらのクラスの特定の関数を使ってスレッドを開始しています。これらのオブジェクトが構築されているメンバ関数を含むクラスには、静的なprivate Mutexメンバがあります。私はこの静的メンバーをコンストラクタと各コンストラクタの内部に渡しています。渡されたMutex(おそらくは参照)は別のローカルメンバーに割り当てられています。Mutexオブジェクトは参照渡しですか?
これらのローカルミューテックスメンバーのそれぞれを使用してスレッドの安全を確保すれば、これを達成できますか?スレッド関数を含むオブジェクトのインスタンスがどれだけ存在しても、それらはすべて同じMutexオブジェクトを参照しているため、スレッドセーフは適切に使用されているかどうかを確認しています。
アイデアを表現するためのコードスニペットの下に見つけてください:
Class ThreadClass
{
private Mutex myCopyOfMutex;
public ThreadClass(Mutex _globalMutex)
{
myCopyOfMutex = _globalMutex;
}
public ThreadFunction()
{
// Wait until it is safe to enter.
myCopyOfMutex.WaitOne();
// critical code
// Release the Mutex.
myCopyOfMutex.ReleaseMutex();
}
}
Class MotherClass
{
private static Mutex mut = new Mutex();
ThreadClass one = new ThreadClass(mut); // first instance
Threadclass two = new ThreadClass(mut); // second instance
// Assign the Thread function to run on separate Thread
}
返信と説明をありがとう。実際には、私は参照として渡すことを暗示したが、言語が混ざっていた:)。 –