将消息分派到远程服务器的更好方法

宇宙68

我正在寻找一种更好的方式来发送消息(性能方面)。

我有如下消息循环:

 while (true)
 {                    
     if (_outboundMessages.Count == 0)
     {
         Thread.Sleep(100);
         continue;
     }

     var message = _outboundMessages.Dequeue();
     SendMessage(message, _tradeStreamSSL);
  }

我有其他线程随意向消息队列添加消息。我想避免 Thread.Sleep(100),我想到了 AutoResetEvent/ManualResetEvent(消息循环将等待来自其他线程的信号),但是很有可能发生竞争条件。

注意:要记住的重要规则是,每条消息都必须尽快广播。

有任何想法吗?

谢谢!!

凯文·戈斯

这是BlockingCollection 的一个很好的用例

private BlockingCollection<Message> _outboundMessages;

private void ConsumerThread()
{
    // This will block until new messages are queued
    foreach (var item in _outboundMessages.GetConsumingEnumerable())
    {
        SendMessage(message, _tradeStreamSSL);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章