在多核盒子上使用繁忙循环应用程序是否可以?
我有几个应用程序,它们从POSIX消息队列中读取消息,进行处理并再次等待新消息。但是,据我所知,mq_timedreceive是非常昂贵的操作,如果应用程序在O_NONBLOCK队列上执行mq_receive,它的性能会更好(延迟更少)。因此,如果我为非阻塞消息处理保留了几个CPU(来自12个),它会没问题吗?
答案 0 :(得分:1)
所有,在多核盒子上使用繁忙循环应用程序是否可以?
无论设备如何,是的都可以使用忙碌的等待。不,不建议,不,这很少是必要的,但可以肯定 - 这是你的计算机,你的应用程序,去吧!
但是,据我所知,mq_timedreceive是非常昂贵的操作,如果应用程序在O_NONBLOCK队列上执行mq_receive,它的性能会更好(延迟更少)。因此,如果我为非阻塞消息处理保留了几个CPU(来自12个),它会没问题吗?
你有一种只能用数据治愈的怀疑。进行测量,看看它是否确实像您认为的那样昂贵。没有什么可以告诉你,这个价值的一半。您的应用程序的性能期限以毫秒,微秒或纳秒(或每秒数百/千/百万次操作中的吞吐量数字)来衡量。这与目标硬件的功能相结合将决定哪种解决方案是合适的。