我正在從一個類構造幾個對象,並使用這些類中的特定函數來啓動線程。現在,包含構建這些對象的成員函數的Class擁有一個靜態專用Mutex成員。我將這個靜態成員傳遞給構造函數,並且在每個構造函數中,傳遞的Mutex(可能是通過引用)被分配給另一個本地成員。互斥對象是否通過引用傳遞?
如果我然後使用這些本地Mutex成員中的每一個來確保線程安全,我將能夠實現這一目標嗎?我相信這樣一個事實,無論包含Thread函數的對象有多少個不同的實例存在,因爲它們都指向相同的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
}
感謝您的回覆和澄清。其實我暗示作爲參考傳遞,但得到的語言混合起來:)。 –