我設計了一個Stack包裝類。我的困惑是,如果我在彈出或推送對象到堆棧變量「ParameterStack
」時使用lock
。請讓我知道,這個類是否是線程安全的。我應該在下面的場景中使用鎖定
public static class StackManager
{
private static Stack ParameterStack = new Stack();
public static T Pop<T>()
{
T RawObject;
T Result = default(T);
lock (ParameterStack)
{
RawObject = (T)ParameterStack.Pop();
}
if (RawObject != null && RawObject is T)
Result = (T)RawObject;
return (T)Result;
}
public static void Push<T>(T Data)
{
lock (ParameterStack)
{
ParameterStack.Push(Data);
}
}
}
我已經創建了這個StackManager類用於學習目的。
是的,但這需要Fx4,並不會履行'學習的目的' – 2011-05-15 07:22:24
感謝您更新的代碼片段,如上所述,我將肯定會轉移到ConcurrentStack .NET Framework 4. – AbrahamJP 2011-05-15 07:55:59