Qt (C++)线程

线程的实现方法

  1. 继承QThread        重写run()方法,调用start()便可以使用
  2. 继承QRunnable    重写run()方法,需要使用线程池:QThread,调用QThreadPool::start()
  3. moveToThread     直接将实例对象扔到一个线程中,然后通过信号槽调用响应的槽函数(注意信号槽绑定时的第五个参数)
  4. QtConcurrent       直接调用方法:QtConcurrent ::run()

线程的同步与异步问题

所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作。简单来说,同步就是必须一件一件事做,等前一件做完了才能做下一件事。

所谓异步,是一个异步过程调用发出后,调用者在没有得到结果之前,就可以继续执行后续操作。当这个调用完成后,一般通过状态、通知和回调来通知调用者。对于异步调用,调用的返回并不受调用者控制。

 

再控制线程同步的问题,我们需要用到一些锁来对数据进行控制

  1. QMutex                   互斥锁
  2. QReadWriteLock    读写锁(1:只能允许读/写一种操作执行   2:当只执行读操作时,允许多个线程同时读)
  3. QSemaphore          信号量   互斥锁是保护一个资源,信号量是保护类资源。主要体现在生产者与消费者的关系上
  4. QWaitCondition       条件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值