并发控制原理(二)

本文深入探讨并发控制的同步原语,包括信号量、读写锁、尝试加锁及其优缺点。同时,分析了死锁现象及避免策略,强调了正确使用同步原语对系统性能的影响。
摘要由CSDN通过智能技术生成

并发控制原理(二)

同步原语简介(续)

信号量

  • 生产者-消费者问题(有界缓冲区问题):
    两个分别为生产者和消费者的进程共享了一块固定大小的公共缓冲区,生产者产生数据信息,消费者消耗数据信息。整个过程遵循:
  1. 缓冲区被填满时,生产者需要停止生产
  2. 缓冲区为空时,消费者需要停止消耗

解决方法:缓冲区被填满时,生产者进入睡眠,直到缓冲区不为空;消费者发现缓冲区为空,进入睡眠,直到缓冲区不为空。

解决的主要途径:信号量(semaphore)
记录缓冲区的元素个数,并规定关于信号量的操作必须为原子操作:P操作、V操作
P操作:对信号量进行减少;V操作:对信号量进行增加

信号量为0,P操作自动睡眠,直到V操作将其唤醒
和有界缓冲区不同,V操作不会进入休眠,相当于无界缓冲区

在Linux中,相当于DOWN、UP操作

void down(struct semaphore* sem
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值