【C语言】一种状态超时阻塞循环查询的办法
1.方法1
static void wait_notify_async ( notify_type_t notify_type)
{
static rt_tick_t exit_tick;
exit_tick = rt_time_get_msec ( ) ;
lb_int32 notify_success = RT_FALSE;
static int timeout;
CHKPNT;
while ( notify_success == RT_FALSE) {
switch ( notify_type) {
case ADAS_EXITED:
if ( algorithm_status. adas_status == 2 )
notify_success = RT_TRUE;
break ;
case BSD_EXITED:
if ( algorithm_status. bsd_status == 2 )
notify_success = RT_TRUE;
break ;
case DMS_EXITED:
if ( algorithm_status. bsd_status == 2 )
notify_success = RT_TRUE;
break ;
case RECORD_EXITED:
if ( record_status == 2 )
notify_success = RT_TRUE;
break ;
case TAKE_PICTURE_STATUS:
if ( take_picure_status > 0 )
notify_success = RT_TRUE;
break ;
default :
break ;
}
timeout = rt_time_get_msec ( ) - exit_tick;
if ( timeout >= 10 * 1000 )
break ;
rt_thread_mdelay ( 10