而(true)vs“”中的EventWaitHandle通知;每秒1000次”;处理
本文关键字:通知 每秒 1000次 处理 EventWaitHandle 中的 vs true | 更新日期: 2023-09-27 18:27:26
我正在编写交易引擎。我收到来自市场的最新消息。它大约是每秒1000次更新,我把它们放在队列中。考虑到我应该如何处理消息,问题是——使用EventWaitHandle合理吗?还是最好使用while(true)
循环?
while (true)
{
queue.wh.WaitOne(); // do I need that to be executed 1000 times per second or just skip it?
if (queue.Count > 0)
queue.Dequeue()
....
或者你可以提出一些不同的建议。。。
您应该研究这两种方法。
我的第一个版本是:
while(true)
{
while(queue.Count > 0)
{
var md;
lock(queue)
{
md = queue.Dequeue();
}
...
}
Thread.Sleap(0);
}
WaitOne()
足够聪明,可以首先使用旋转锁,所以我认为更改代码不会在性能/资源方面获得任何好处。也许您唯一可以做的就是用while
替换if
,这样您就可以在一个"周期"内处理所有排队的请求。
您可以将WaitOne()
放在else子句中。
if (queue.Count > 0)
queue.Dequeue();
else
queue.wh.WaitOne();