1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Linux系统编程40:多线程之基于环形队列的生产者与消费者模型

Linux系统编程40:多线程之基于环形队列的生产者与消费者模型

时间:2022-06-04 22:46:56

相关推荐

Linux系统编程40:多线程之基于环形队列的生产者与消费者模型

文章目录

(1)什么是信号量(2)与信号量相关的操作(3)基于环形队列的生产者与消费者模型-信号量(单消费者单生产者)

(1)什么是信号量

前面的叙述中,我们通过锁保证了每次只有一个线程进入临界区,但是临界区资源很多也很大,每次只允许一个线程进入往往会使效率很低。所以如果将临界区划分为多个独立的区域,划分为多少个区域就让多少个线程进入,,但是这样就同时带来了一个问题——如果划分为了5个区域,但是同时进入了10个线程该怎么办?所以这一点可以通过信号量解决。信号量可以理解为一个计数器,它用来描述临界资源的有效个数

信号量由一个值和一个指针组成,指针指向等待该信号量的线程。信号量的值表示相应资源的使用情况,比如如果S>=0表示资源够用,如果执行P操作表示请求分配一个资源,那么S就会减一;当S<0时表示已经没有可用资源(此时S的绝对值表示等待该资源的线程数)请求者必须等待其他线程释放资源方可继续运行。如果执行一个V操作就表示会释放一个资源,所以S加一

(2)与信号量相关的操作

1:要使用信号量就需要创建一个sem_t类型变量

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。