多线程间的互斥(下)

Posted -glb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程间的互斥(下)相关的知识,希望对你有一定的参考价值。

问题:程序有多少临界资源?需要多少线程锁?

临界资源是没有任何的限制

一般性原则:每一个临界资源都需要一个线程锁进行保护(一 一对应)

技术图片

 

线程A和线程B获取线程锁的顺序是不一样的。 

线程的死锁概念

-线程间相互等待临界资源而造成彼此无法继续执行

发生死锁的条件:

-系统中存在多个临界资源且临界资源不可抢占

-线程需要多个临界资源才能继续执行

技术图片

 

 技术图片

 

 信号量的概念

-信号量是特殊的线程锁

-信号量允许N个线程同时访问临界资源

-Qt中直接支持信号量(QSemaphore)

技术图片

 

 再论生产消费者的问题:

技术图片

 

以上是关于多线程间的互斥(下)的主要内容,如果未能解决你的问题,请参考以下文章

多线程间的互斥

多线程互斥锁读写锁

c# 多线程互斥问题。。

多线程(上)

Linux多线程

经典线程同步总结 关键段 事件 互斥量 信号量