在多核盒上使用busy loop应用程序

时间:2012-07-02 17:00:50

标签: c++ linux posix message-queue

在多核盒子上使用繁忙循环应用程序是否可以?

我有几个应用程序,它们从POSIX消息队列中读取消息,进行处理并再次等待新消息。但是,据我所知,mq_timedreceive是非常昂贵的操作,如果应用程序在O_NONBLOCK队列上执行mq_receive,它的性能会更好(延迟更少)。因此,如果我为非阻塞消息处理保留了几个CPU(来自12个),它会没问题吗?

1 个答案:

答案 0 :(得分:1)

  

所有,在多核盒子上使用繁忙循环应用程序是否可以?

无论设备如何,是的都可以使用忙碌的等待。不,不建议,不,这很少是必要的,但可以肯定 - 这是你的计算机,你的应用程序,去吧!

  

但是,据我所知,mq_timedreceive是非常昂贵的操作,如果应用程序在O_NONBLOCK队列上执行mq_receive,它的性能会更好(延迟更少)。因此,如果我为非阻塞消息处理保留了几个CPU(来自12个),它会没问题吗?

你有一种只能用数据治愈的怀疑。进行测量,看看它是否确实像您认为的那样昂贵。没有什么可以告诉你,这个价值的一半。您的应用程序的性能期限以毫秒,微秒或纳秒(或每秒数百/千/百万次操作中的吞吐量数字)来衡量。这与目标硬件的功能相结合将决定哪种解决方案是合适的。