我开发了一个C程序,该程序监视来自不同来源的传入消息,并根据消息进行处理。我的职责是仅等待一个来源。当然,等待必须是非阻塞的。
最有效的方法是什么?
无阻塞read()?
选择/投票/投票方式?
好吧,如果它消耗的CPU /时间大约相同,我将选择更简单的选项,即读取的一个。谢谢。
select
,文件描述符超时。如果您的选择超时是无限的,请改为使用阻塞读取。如果您选择的内容超时,但是您的程序没有执行其他任何操作,请改为使用阻塞读取。
使用non_blocking read()有一些缺点:
但是如果您即将收到的数据太小,使用选择/轮询将进行系统调用(例如,read
),需要多次调用。
为了更简单,我认为使用选择/轮询更好。