涉及到通讯/数据交互的时候,假如采用while来等待,例如
//wait for data
while (!getData());
//get data then do something
//...
有时候遇到了一直等不到信号/数据的情况,有造成程序异常的风险,最好还是加入超时处理的机制,例如:
int time_before = getTime();
//wait for data
while (!getData()) {
if (getTime() - time_before > 100)
break;
}
再扩展些来说,有些算法中可能采用不停迭代直至结果小于预设的误差阈值才会退出迭代,这时候也要考虑万一一直不收敛怎么办,类似地就需要限定最大迭代次数来保证了。