1

可以在多核机器上使用忙循环应用程序吗?

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

4

1 回答 1

1

所有,可以在多核机器上使用忙循环应用程序吗?

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

但是,据我了解,mq_timedreceive 是相当昂贵的操作,如果应用程序在 O_NONBLOCK 队列上执行 mq_receive,它的性能会更好(延迟更少)。因此,如果我保留几个 CPU(从 12 个)用于非阻塞消息处理,可以吗?

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

于 2012-07-02T17:12:32.507 回答