多线程间的互斥
2020-12-18 11:06
标签:线程锁 相互 多线程 问题 状态 程序 info 竞争 安全 值得思考的问题: 多个线程除了在时序上可能产生相互依赖,在其他方面是否也可能产生相互依赖呢? 生产消费者问题: -有m个消费者同时需要从仓库中取出产品 -规则: 当仓库未满,任意生产者可以存入产品 当仓库未空,任意消费者可以取出产品 编程实验:生产消费者问题 临界资源(Critical Resource) -每次只允许一个线程进行访问(读/写)的资源 -线程间的互斥(竞争) -多个线程在同一时刻都需要访问临界资源 QMutex类是一把线程锁,保证线程间的互斥 -利用线程锁能够保证临界资源的安全性 QMutex中的关键成员函数 -void lock() 当锁空闲时,获取锁并继续执行 当锁被获取,阻塞并等待锁释放 -void unlock() 释放锁(同一把锁的获取和释放必须在同一线程中成对出现) QMutex使用示例 QMutex mutex; mutex.lock(); //do something with critical resource mutex.unlock(); 注意:如果mutex在调用unlock()时处于空闲状态,那么程序的行为是未定的。 解决生产者消费者问题:
多线程间的互斥 标签:线程锁 相互 多线程 问题 状态 程序 info 竞争 安全 原文地址:https://www.cnblogs.com/-glb/p/13381974.html
-有n个生产者同时制造产品,并把产品存入仓库中