小编use*_*891的帖子

从C#中的ConcurrentQueue中排队对象

嘿,我正在尝试在C#中为异步服务器实现ConcurrentQueue.收到完整的消息后,项目将排队.为了使消息出列,我正在制作少量线程来执行出列和服务请求的工作.这是不合适的,因为每个线程都使用while循环,这显然会消耗相当多的处理器时间.

是否有人知道在需要时将消息出列但不消耗如此多的处理时间的方法.

{
    ...

    for (int i = 0; i < 3; i++)
    {
        Thread t = new Thread(new ThreadStart(startParsingMessages));
        t.Start();
    }

    ...
}

private void startParsingMessages()
{
    QueueContainer dequeued = null;
    Console.WriteLine("Trying");
    while (true)
    {
        if (queue.TryDequeue(out dequeued))
        {
            Console.WriteLine("processing queue");
            ProcessMessage(dequeued.socket, dequeued.message);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c#

9
推荐指数
2
解决办法
2万
查看次数

标签 统计

.net ×1

c# ×1