嗨我是使用並行任務的新手。我有一個需要並行運行多次的功能。下面是虛擬代碼來表明這一點,並行任務共享一個全局變量
public MyClass GlobalValue;
static void Main(string[] args)
{
Task task1 = Task.Factory.StartNew(() => SaveValue());
Task task2 = Task.Factory.StartNew(() => SaveValue());
Task task3 = Task.Factory.StartNew(() => SaveValue());
}
public void SaveValue()
{
string val = GetValueFromDB();
if (GlobalValue == NULL)
{
GlobalValue = New MyClass(val);
}
else if (GlobalValue.Key != val)
{
GlobalValue = New MyClass(val);
}
string result = GlobalValue.GetData();
}
現在行GlobalValue = New GlobalValue(val)每次被調用。請幫助我。我認爲全局變量存在問題。
我覺得你有與比賽條件和缺乏任何一種鎖在這裏的一個問題.... –
這是什麼代碼的意義呢? – Rotem
您需要編寫線程安全的代碼。祝你好運。 – SLaks