아래 코드를 살펴보십시오. 이것이 ENTIRE 클래스라고 가정합니다. 나는 어떤 코드도 생략하지 않았다. 이것은 말 그대로 문자 그대로입니다.C# multithreading
주 프로그램 루프에서이 클래스를 인스턴스화하고 myExample.Add (무엇이든)를 수시로 호출하면 Dequeue() 및 Enqueue()를 잠그지 않아 발생하는 문제에 대해 걱정할 필요가 있습니까?
public class Example<T>
{
private Queue<T> q = new Queue<T>();
public Example()
{
new Thread(() =>
{
while (true)
{
if (this.q.Count > 0)
{
var item = this.q.Dequeue();
}
Thread.Sleep(1);
}
}).Start();
}
public void Add(T val)
{
this.q.Enqueue(val);
}
}
this.q.Enqueue (val)가 this.q.Dequeue()와 동시에 호출되면 어떻게됩니까?
(귀하의 코멘트에 회신) –