以下のコードを見てください。これがENTIREクラスであると仮定してください。私はすべてのコードを省略していません。これは文字通りすべてのことです。C#マルチスレッド
私のメインプログラムのループでこのクラスをインスタンス化し、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()と同時に呼び出されるとどうなりますか?
(あなたのコメントに返信しました) –