如果将阻塞函数放入C程序的循环中会发生什么?例如:
我有一个名为os_io_read()
的函数,该函数基本上读取串行(RS232)输入缓冲区,并等待直到缓冲区中的某些输入来自其他设备。现在,如果我将此函数放在for(;;)
循环中,它是否仍将等待数据,否则循环将继续。就我而言,我有一个运行Linux OS的硬件设备,并且如果我尝试以上述方式执行C程序,则硬件将进入ERROR模式。
我希望我的问题清楚。
答案 0 :(得分:0)
如果os_io_read()
阻止,则阻止。将其放在for
循环中不会影响此行为。
答案 1 :(得分:0)
如果将其放入循环中,它将重复执行其工作。循环不会以任何方式影响其中的内容。
通常,如果要处理“实时”方面带来的问题,则最好不要使用阻塞-因此,您始终拥有控制权。请改用非阻塞,并检查返回代码是否读取了内容或只是没有数据返回。