我想知道以下哪個是使用Mutex(或Semaphores或ReadWriteLockSlims等)時的建議模式。應該mutex.WaitOne()之內或之前的try/finally塊
初始鎖定是否應該在try語句內部或外部發生?它不重要嗎?
_mutex.WaitOne()
try
{
// critical code
}
finally
{
_mutex.ReleaseMutex();
}
或
try
{
_mutex.WaitOne()
// critical code
}
finally
{
_mutex.ReleaseMutex();
}
但是你現在不叫ReleaseMutex而另一個線程可能是它裏面允許第二個線程進入?即線程A調用WaitOne並進入互斥體 - >線程B調用WaitOne和塊 - >線程C崩潰並調用ReleaseMutex - >線程B與線程A一起輸入互斥體。 – 2014-11-13 11:51:31