我最近有在測試,這是類似以下的面試問題,我沒有使用線程可以有人幫告訴我如何發展的非常多的經驗可以解決這個問題?:線程測試問題
public class StringQueue
{
private object _lockObject = new object();
private List<string> _items = new List<string>();
public bool IsEmpty()
{
lock (_lockObject)
return _items.Count == 0;
}
public void Enqueue(string item)
{
lock (_lockObject)
_items.Add(item);
}
public string Dequeue()
{
lock (_lockObject)
{
string result = _items[0];
_items.RemoveAt(0);
return result;
}
}
}
下面的方法在上面的實現中是線程安全的,爲什麼?
public string DequeueOrNull()
{
if (IsEmpty())
return null;
return Dequeue();
}
我標記此C#,因爲它看起來像。如果我錯了,請糾正我。 –