小编Her*_*rma的帖子

C# 线程处理消息队列

我有以下要求 -

  1. 接收消息并将其排入队列的线程。
  2. 处理排队消息的线程。

现在,第二个线程必须始终处于活动状态 - 为此我使用了无限 while 循环,如下所示:

private AutoResetEvent messageReset;
private Queue<byte[]> messageQueue;

//thread 2 method
private void ProcessIncomingMessages()
{
 messageReset.WaitOne(); //wait for signal
 while(true)
 {
    if (messageQueue.Count > 0)
    {
        //processing messages
    }
  }
}
public void SubmitMessageForProcessing(byte[] message){
            messageQueue.Enqueue(message); //enqueue message

            // Release the thread
            messageReset.Set();
}
Run Code Online (Sandbox Code Playgroud)

现在,这个无限 while 循环使 CPU 利用率非常高。有没有什么办法可以降低CPU利用率

注意:我无法添加任何 thread.sleep 语句,因为传入消息将以最小的延迟显示在 UI 上。

c# multithreading message-queue

4
推荐指数
1
解决办法
6979
查看次数

标签 统计

c# ×1

message-queue ×1

multithreading ×1