我需要實現從多線程調用的簡單函數。該功能的邏輯很簡單 - 想想賽馬 - 只有第一匹馬才能獲得金牌,一旦我們贏得比賽結束的贏家。如何實現簡單的多線程函數
class ConditionalOrderGroup
{
private volatile bool _locked = false;
private List<ConditionalOrder> _ConditionalOrderList = null;
public bool LockGroup(ConditionalOrder initiator)
{
// this is finishline - we need to let only the first one proceed
if (_locked)
return false;
else
{
_locked = true;
}
// this is what winner gets
foreach (ConditionalOrder order in _ConditionalOrderList)
{
\\ cancel other orders
}
return true;
}
}
我不開心
if (_locked)
return false;
else
{
_locked = true;
}
如果兩個命令可以通過如果檢查,並繼續其他。如何重寫此代碼 而不使用鎖聲明?
UPDATE 我的意思是我的目標是不使用任何阻塞方法,如鎖定語句。
他說,不使用鎖。 – Martin 2010-07-05 10:43:29
太棒了!這正是我需要的一種非阻塞方法。 – 2010-07-05 10:44:15
@Martin:他說沒有* lock語句*。他已經做的是(儘管是粗糙的)鎖。 – Mizipzor 2010-07-05 10:46:17