我在做一个qt的软件,软件中会调用一个扫码枪的接口扫描条码获得扫描结果,对于软件来说调用扫码枪扫码比较耗时,所以我开了一个子线程负责扫码枪的调用。但是,有时候我已经调用了扫码枪接口,在等待接口返回扫码结果的某个时间我不想要扫码结果了,需要立刻关闭扫码子线程。
我尝试使用:
`thread->quit();
thread->wait();`
但是这段代码会一直阻塞,因为扫码子线程一直在等待扫码结果,不满足返回条件。
对于这种情况我该怎么办?
我在做一个qt的软件,软件中会调用一个扫码枪的接口扫描条码获得扫描结果,对于软件来说调用扫码枪扫码比较耗时,所以我开了一个子线程负责扫码枪的调用。但是,有时候我已经调用了扫码枪接口,在等待接口返回扫码结果的某个时间我不想要扫码结果了,需要立刻关闭扫码子线程。
我尝试使用:
`thread->quit();
thread->wait();`
但是这段代码会一直阻塞,因为扫码子线程一直在等待扫码结果,不满足返回条件。
对于这种情况我该怎么办?
我觉得这个程序完全没有必要用线程来调用扫描枪扫描,因为意义不大,还增加编程的复杂度。
因为这样的应用必须获取扫描数据,或者直接中断扫描数据,是需要在这个过程阻塞或者事件触发的,而线程在这样场景中没有任何意义。
这里最好的是中断性编程。
3 回答1.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
2 回答530 阅读✓ 已解决
1 回答2k 阅读
1 回答1.2k 阅读
1 回答484 阅读✓ 已解决
扫描枪接口里面有中止的接口吗?
如果有,你可以调用这个接口,然后等待你调用扫描的线程自然出错结束就好了。
如果没有,你即使强行终止了你的线程,但io还卡在被调用的接口代码里面,这种情况下即使你的线程退出了,你也没办法再次调用这个接口来做新的扫描的,你的线程是否退出也不重要啊。