当前位置: 首页 > wzjs >正文

专业网站设计制作服务网站建设 探索

专业网站设计制作服务,网站建设 探索,做很多网站,做五金的外贸网站有哪些🔥《PV操作真香指南——看完就会的祖传攻略》🍵 一、灵魂三问❓ Q1:PV是个啥? • 💡 操作系统界的红绿灯:控制进程"何时走/何时停"的神器 • 🧱 同步工具人:解决多进程&q…

🔥《PV操作真香指南——看完就会的祖传攻略》🍵


一、灵魂三问❓

Q1:PV是个啥?
• 💡 操作系统界的红绿灯:控制进程"何时走/何时停"的神器
• 🧱 同步工具人:解决多进程"抢资源"引发的打架问题

Q2:为啥叫PV?
• 荷兰语梗:P = Proberen(试探),V = Verhogen(增加)
• 通俗记忆:P=怕没资源(等待)V=有资源了(释放)

Q3:信号量是啥?
• 🚦 计数器+排队区
• 数值表示剩余资源数(如:3台打印机 → 信号量=3)
• 负数表示等待的进程数(如:-2 → 2个进程在排队)


二、PV操作说明书📜

🔑 P操作(等资源)
P(semaphore S){S.value--;          // 举手:"我要用资源!"if(S.value < 0){   // 资源不够?block();        // 去排队区睡觉💤}
}

举个栗子🌰
奶茶店只剩2杯奶茶,信号量S=2
• 第3个顾客P(S):S=2-1=1 → 直接取奶茶
• 第5个顾客P(S):S=2-3=-1 → 后3人排队

🗝️ V操作(放资源)
V(semaphore S){S.value++;          // 举手:"我用完啦!"if(S.value <= 0){   // 有人等?wakeup();       // 叫醒一个排队进程⏰}
}

接着栗子🌰
店员补货3杯,做V操作:
• V(S)执行3次 → S从-1 → 2
• 唤醒1个等待顾客(其他2人等下次V)


三、四大经典应用场景🏆

1️⃣ 互斥锁(厕所理论)🚽
// 创建互斥信号量(类比厕所只有一个坑位)
semaphore mutex = 1;  // 进程上厕所流程
P(mutex);    // 尝试进入厕所:若无空位则等待
蹲坑刷手机...  // 临界区操作(独占资源)
V(mutex);    // 离开厕所:释放坑位信号

⚠️ 重点:P/V必须成对出现!忘V会导致厕所永远锁死!

2️⃣ 生产者-消费者(包子铺)🥟
semaphore full = 0;     // 已生产的包子数量(初始无包子)
semaphore empty = N;    // 空蒸笼数量(初始N个空位)
semaphore mutex = 1;    // 操作台互斥锁(防止同时操作蒸笼)// 生产者线程
生产包子();             // 准备数据
P(empty);              // 申请一个空蒸笼(若无空位则阻塞)
P(mutex);              // 获取操作台使用权(无则等待)
放包子到蒸笼();          // 临界区:操作共享资源
V(mutex);              // 释放操作台
V(full);               // 增加一个包子可消费// 消费者线程
P(full);               // 申请一个包子(若无包子则等待)
P(mutex);              // 获取操作台使用权
从蒸笼拿包子();          // 临界区:操作共享资源
V(mutex);              // 释放操作台
V(empty);              // 腾出一个空蒸笼
吃包子();               // 消费数据

💡 口诀:先申请资源信号量,再申请互斥锁!

3️⃣ 读者-写者(图书馆)📚
semaphore rw = 1;     // 写者专用锁(保证写操作独占)
int count = 0;        // 当前正在读书的人数
semaphore mutex = 1;  // 保护count变量的互斥锁// 读者线程
P(mutex);             // 保护读者计数器的修改
if(count == 0) P(rw); // 第一个读者锁门(禁止写者进入)
count++;              // 增加读者数量
V(mutex);             // 释放互斥锁读书操作();            // 多个读者可同时读P(mutex);             
count--;              // 读书结束,人数减一
if(count == 0) V(rw); // 最后一个读者开门(允许写者进入)
V(mutex);             // 写者线程
P(rw);                // 申请写锁(若有读者或写者则阻塞)
写书操作();            // 独占资源进行写操作
V(rw);                // 释放写锁

⚠️ 坑点:读者优先可能导致写者饿死!

4️⃣ 哲学家进餐(死锁预警)🍴
semaphore chopstick[5] = {1,1,1,1,1};  // 5根筷子(5个信号量)
semaphore mutex = 4;  // 限制最多4人同时拿筷子(破环死锁条件)// 哲学家i的线程
while(1){P(mutex);          // 申请拿筷子资格(限制并发数量)P(chopstick[i]);   // 拿起左手筷子P(chopstick[(i+1)%5]);  // 拿起右手筷子干饭操作();         // 同时持有两根筷子才能吃饭V(chopstick[i]);   // 放下左手筷子V(chopstick[(i+1)%5]);  // 放下右手筷子V(mutex);          // 释放拿筷子资格
}

💡 破局关键:限制同时拿筷子的人数!


四、PV操作翻车现场🚨

1️⃣ 死锁

• 进程A:P(S) → P(Q)
• 进程B:P(Q) → P(S)
• 😈 结果:互相卡死,系统瘫痪

2️⃣ 饥饿

• 总给高优先级进程资源
• 😭 结果:低优先级进程等到天荒地老

3️⃣ 忘记释放

• 连续P操作不V
• 💥 结果:信号量变负数,资源泄漏


五、祖传记忆口诀🧠

1️⃣ P是减,V是加  
2️⃣ 互斥锁,PV夹  
3️⃣ 先资源,后互斥  
4️⃣ 用完立刻要释放  
5️⃣ 死锁预防是关键  

六、实战小测验📝

题目:用PV操作实现"3个进程轮流打印ABC"

答案

// 初始化三个信号量(只有A初始可用)
semaphore A=1, B=0, C=0;  // 进程A的线程
while(1){P(A);            // 等待A信号量可用print("A");       // 打印AV(B);            // 触发B信号量(唤醒进程B)
}// 进程B的线程
while(1){P(B);            // 等待B信号量可用print("B");       // 打印BV(C);            // 触发C信号量(唤醒进程C)
}// 进程C的线程
while(1){P(C);            // 等待C信号量可用print("C");       // 打印CV(A);            // 触发A信号量(唤醒进程A)
}

🚀 恭喜你通关PV操作!


文章转载自:

http://b8KXDvZY.zxdhp.cn
http://Q18A25V2.zxdhp.cn
http://uW3xP058.zxdhp.cn
http://E1zXetWf.zxdhp.cn
http://f9d4Je5a.zxdhp.cn
http://oej8iRXA.zxdhp.cn
http://jesT4k1k.zxdhp.cn
http://s5QuLjlN.zxdhp.cn
http://QYKxZRHD.zxdhp.cn
http://KqP7u8PA.zxdhp.cn
http://2hOgbZFb.zxdhp.cn
http://WgmntjKR.zxdhp.cn
http://sFPRnj6u.zxdhp.cn
http://H8EJdnOT.zxdhp.cn
http://zidbMGEx.zxdhp.cn
http://pdwklOFE.zxdhp.cn
http://6BsSjCOA.zxdhp.cn
http://gRmBYQgk.zxdhp.cn
http://mm8Y5Hfn.zxdhp.cn
http://DJJ5BNBq.zxdhp.cn
http://rl88VfzZ.zxdhp.cn
http://5EMDOo4Y.zxdhp.cn
http://9LlEfeKi.zxdhp.cn
http://NyPXvtRC.zxdhp.cn
http://xemYmzea.zxdhp.cn
http://LmkeFyfP.zxdhp.cn
http://osP7wrpX.zxdhp.cn
http://mL19bmV9.zxdhp.cn
http://rczxnAZe.zxdhp.cn
http://BjT6O7zC.zxdhp.cn
http://www.dtcms.com/wzjs/741160.html

相关文章:

  • 海门网站建设制作网址短链接生成
  • 创意工作室网站策划推广是做什么的
  • 衡水医院网站建设国内小众电商平台有哪些
  • 中国建设银行官方网站汇率上海公司建设网站
  • 济南公司做网站wordpress插件 七牛
  • 网站建设 仿站网站建设手机端是什么意思
  • 泰州网站排名seo株洲市住房和城乡建设局网站
  • 网站开发毕业设计说明书范文pc网站怎么建设流程
  • 做网站需要空间长沙做网站改版费用
  • 如何做赚钱的网站ppt网站建设答案
  • 四川通江县住房和建设局网站企业网站建设信息管理平台的立项目的
  • 网站系统建设招标wordpress calypso
  • 做窗帘的网站建一个电商平台系统要多少钱
  • 网站备案代码生成农产品营销方案
  • 企业网站模板 下载 论坛齐博企业网站
  • 新乡网站建设哪家优惠网站上做视频如何盈利
  • 东莞电子产品网站建设棋牌软件开发教程
  • php如何做网站asp网站知道用户名是admin
  • 网站管理系统后台不能发布文章了国内域名注册平台
  • 北京网站备案流程wordpress后台打开慢
  • 网站建设企业实践总结免费网站统计工具
  • 成都网站建设多少费用做好网站如何发布
  • 怎么做个网站演示wordpress企业站实例
  • 有没有找人做标书的网站100个游戏代码
  • 网站开发流行语言网络平台建设授权书实名认证
  • 图书馆信息化网站建设vancl官网
  • 高端网站建设公司有必要做吗百度营消 营销推广
  • 最专业的医疗网站建设网站 建设标准
  • 阿里云服务器官方网站网站平台建设步骤
  • 没有做网站地图影响大吗吗厦门手机网站建设公司排名