Qt 之线程同步

Qt 之线程同步简述使用线程的目的是允许代码并行运行,但是有时线程必须停止并等待其他线程。例如,如果两个线程试图同时写入相同的变量,结果是未知的。迫使线程等待另一个的原则被称为互斥。这是一种保护共享资源等数据的常见的技术。简述低级同步原语风险便利类高级事件队列低级同步原语QMutex是强制执行互斥的基本类。一个线程锁定一个互斥量(mutex),以获得共享资源的访问权限。如果另一个线程试图锁定互斥量,

简述

使用线程的目的是允许代码并行运行,但是有时线程必须停止并等待其他线程。例如,如果两个线程试图同时写入相同的变量,结果是未知的。 迫使线程等待另一个的原则被称为互斥 。 这是一种保护共享资源等数据的常见的技术。

| 版权声明:一去、二三里,未经博主允许不得转载。

低级同步原语

QMutex 是强制执行互斥的基本类。一个线程锁定一个互斥量(mutex),以获得共享资源的访问权限。如果另一个线程试图锁定互斥量,而互斥量已被锁定,这时,它将进入睡眠状态,直到第一个线程完成其任务并解锁互斥量。

QReadWriteLock 类似于 QMutex,除了它区分了“读”和“写”的访问。当一个数据块没有被写入,多线程对他同时进行读取是安全的。一个 QMutex 迫使轮流读取共享数据,而 QReadWriteLock 允许同时读取,从而提高并行性。

QSemaphore 是 QMutex 的一个推广,可以保护一定数量相同的资源。相比之下,一个 QMutex 只能保护一个资源。Qt之线程同步(生产者消费者模式 – QSemaphore) 提供了一个典型的案例,信号量:在“生产者 – 消费者”之间同步访问循环缓冲区。

QWaitCondition 同步线程,不通过执行互斥,而通过提供一个条件变量

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/34653.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注