每次Dequeue()后创建新队列的原因

时间:2016-11-18 19:52:44

标签: c# multithreading queue

这是我继承的内部工具的代码:

while (listThreadsRunning != null)
{
    listThreadsRunning.RemoveAll(mre => mre.Key.IsSet);

    if ((listThreadsRunning.Count < maxThreads || maxThreads == 0) && queueThreads.Any())
    {
        queueThreads = new Queue<KeyValuePair<ManualResetEventSlim, ThreadInput>>(queueThreads);

        var eventThreadPair = queueThreads.Dequeue();

        if (!eventThreadPair.Key.IsSet)
        {
            listThreadsRunning.Add(eventThreadPair);

            eventThreadPair.Value.Worker.Start();
        }
    }
    Thread.Sleep(SleepOperationTime.Instance.time);
}

queueThreads是在构造函数中使用此类型实例化的私有变量,并且队列不断由其他线程填充。为什么每次都要重新创建队列?我认为这不是一个很好的理由,但如果有的话,我很乐意听到它。

0 个答案:

没有答案