Task.Run(() =>
{
while (notCancelled)
{
element = ReadXml();
switch (element)
{
case messageheader:
MessageBlockingQueue.Add(deserialze<messageType>());
...
}
}
});
消息缓冲任务
Task.Run(() =>
{
while (notCancelled)
{
Process(MessageQueue.Take());
}
});
这么做会产生 50 多个读取任务和 50 多个任务阻塞在它们自己的缓冲区上。
我这样做是为了避免阻塞读取循环,使程序能够更公平地分配消息处理时间,或者我认为是这样的。
这种处理方式是否低效?有什么更好的方法吗?