关于在qt5中的线程同步问题

背景:

        在主线程中调用创建的play线程来进行视频播放,在停止的时候,停止画面与设置的停止画面不一致。

相关介绍:

    quit():让线程可以安全的退出,原理是告诉事件循环return 0,相当于exit(0)。
    wait():阻塞线程。当接收到exec()返回的0后,返回true,停止阻塞。
    exec():事件循环,意义是在线程执行结束后,不会被销毁,保持挂起状态,当接收到销毁线程信号后,成功退出则return 0。
    terminate():中断当前时间片进行的操作,直接结束线程。(内存,锁等不会被释放)

流程:

        在主线程(main线程)中接收到用户点击stop按钮的请求,向play线程发送quit()的信号。
        在play线程run()函数中,默认有exec()函数,当exec函数接收到quit信号后,停止循环,return 0 。
        在主线程的wait()函数接收到return 0之后,停止阻塞,继续执行主线程。

图:

其他:关于qt5中的线程的其他理解。
        在qt5中,new Qthread操作本质上并不是创建了一个线程,而是创建了一个类,这个类具有线程的执行操作。创建多个线程的情况下,主线程是这多个线程的执行者,创建的这些线程像是规划者。创建的这些线程意义是让主线程可以按照一定顺序来执行这些线程的执行操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值