我需要更好地控制获取值函数的调用,并考虑将其作为线程来实现,等待其完成并获得返回值。如果超时就假设它被冻结了并杀死它,而不影响守护进程本身。然后我可以采取措施,如重置ADC再重新启动。这样做是否可行?
下面是我想要实现的伪代码:
(function int get_adc_value(int adc_channel, float *value))
1. pid = thread(get_adc_value(1,&value)); //创建线程调用该函数 2. wait_until_finish(pid, timeout); //等待函数完成/超时 3. if(timeout) kill pid, start over //如果线程在给定时间内没有返回,则杀死它(它被冻结了) 4. else if return value sane, continue //如果成功,则处理返回变量值并继续
感谢您对此事的任何意见和建议,示例将不胜感激!