我有一个以自定义类对象为键的字典和一个类队列
ConcurrentDictionary<clsEFTOPConnection, Queue<clsEFTOPS>>();
这里是自定义clsEFTOPConnection
类clsEFTOPS
。如果它不在字典中,我会添加一个新队列。现在我想在每个队列上并行工作。我希望每个队列都被线程监视,并且每当执行入队操作时,特定线程应该在睡眠时唤醒并开始使项目出队。所以没有线程等于没有队列,每个线程都将充当其队列的观察者。我已经编写了下面的代码来实现它,但它没有按照我的需要运行
public Queue<clsEFTOPS> CheckAlreadyExistingQueue(clsEFTOPConnection objEFTOPConnection, clsEFTOPS objJobQ)
{
Queue<clsEFTOPS> queue;
// See if we have a queue
if (!mHostQueues.TryGetValue(objEFTOPConnection, out queue))
{
// No queue for this Host, so create and cache
queue = new Queue<clsEFTOPS>();
objJobQ.Host = objEFTOPConnection.Host;
objJobQ.PortNo = objEFTOPConnection.PortNo;
objEFTOPConnection.socket_ = objJobQ.ReconnectSocket();
queue.Enqueue(objJobQ);
mHostQueues.TryAdd(objEFTOPConnection, queue);
JobThrd = new Thread(() => DequeueJobs(queue, objEFTOPConnection));
if (JobThrd.ThreadState != ThreadState.Running)
JobThrd.Start();
}
else
{
queue.Enqueue(objJobQ);
if (queue.Count > 1)
JobThrd = new Thread(() => DequeueJobs(queue, objEFTOPConnection));
else
DequeueJobs(queue, objEFTOPConnection);
if (JobThrd.ThreadState != ThreadState.Running)
JobThrd.Start();
}
return queue;
}