多线程相关笔记

前言:多线程的问题就和家庭做饭一样,厨房只有一个,此时我正在烹饪,假设我媳妇过来也用同一套餐具,做其他美食,很明显,是有冲突的,毕竟我正在用。但假如此时我锁上厨房门,则在我打开厨房门之前,无论如何她都不能进来做饭,这就是线程锁的原理,大差不差。
1,多线程应用程序
1.1 创建一个单独的线程来执行比较耗时间的操作,并与主线程之间处理好同步和数据交互
1.2 线程之间的同步是其交互的主要问题
QThread是线程类,是实现多线程操作的核心类
QMutex、QMutexLocker、QReadWriteLock、QWaitCondition等用于实现线程之间的同步
在这里插入图片描述
例如,停止线程时,quit()和wait()同步使用

thread.quit();
thread.wait();

注意:结束线程时,需要考虑线程是否有可能处于条件等待的阻塞状态,若有可能,则采用terminate()来强制结束线程。例如生产者/消费者模型中的消费者线程结束时,需要强制结束。
1.3 线程安全
多个线程访问同一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他操作,调用这个对象的行为都可以获得正确的结果,那么这个对象就是线程安全的。
或者说:一个类或者程序所提供的接口对于线程来说是原子操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值