我在使用这个例子的时候,最后退出的时候,经常会出现kworker/2:2-4647 [002] … 11056.569150: rtcpu_vinotify_error: tstamp:345997164578 cch:0 vi:1 tag:CHANSEL_NOMATCH channel:0xc4 frame:189 vi_tstamp:11071909220128 data:0x0000000000000589
kworker/2:2-4647 [002] … 11056.569151: rtcpu_vinotify_error: tstamp:345997165243 cch:-1 vi:1 tag:CHANSEL_NOMATCH channel:0x84 frame:87 vi_tstamp:11071909225408 data:0x0000000000000589
kworker/2:2-4647 [002] … 11056.624911: rtcpu_vinotify_error: tstamp:345997844281 cch:0 vi:1 tag:CHANSEL_NOMATCH channel:0xc4 frame:190 vi_tstamp:11071930970880 data:0x0000000000000589
kworker/2:2-4647 [002] … 11056.624912: rtcpu_vinotify_error: tstamp:345997844941 cch:-1 vi:1 tag:CHANSEL_NOMATCH channel:0x84 frame:88 vi_tstamp:11071930976160 data:0x0000000000000589
kworker/2:2-4647 [002] … 11056.624917: rtcpu_vinotify_error: tstamp:345998524670 cch:0 vi:1 tag:CHANSEL_NOMATCH channel:0xc4 frame:191 vi_tstamp:11071952743296 data:0x0000000000000589
类似这种打印,,我查看代码发现退出 pthread_mutex_lock(&ctx.queue_lock);
ctx.dqthread_running = true;
pthread_create(&ctx.cam_dq_thread, NULL, dq_thread, &ctx);
pthread_mutex_unlock(&ctx.queue_lock);
这个dq_thread线程的时候会花很长时间,然后有几率退不出,
/* Close the opened V4L2 device. */
ret = v4l2_close(ctx.fd);
if (ret)
{
cerr << "Unable to close the device" << endl;
ctx.in_error = 1;
}
}v4l2_close 就会无法成功关闭。我能怎么解决这个问题,你们对此有什么优化吗。