程序的同步是由于程序間合作引起的互相制約的問題,要實作程序的同步可用一個信号量與消息聯系起來。當信号量的值為0時表示希望的消息未産生,當信号量的值為非0時表示希望的消息己經存在。假定用信号量S表示某條消息,程序可以通過調用P操作測試消息是否到達,調用V操作發送消息已準備好的通知。
例題
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAnYldHL0FWby9mZvwFN4ETMfdHLkVGepZ2XtxSZ6l2clJ3LcV2Zh1Wa9M3clN2byBXLzN3btgHL9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsQTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5SO4EjM1QDMxMDO3QzM0IWNzYzXzQTO0ATM4IzLcBTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
利用程序同步的意義解題
程序的同步是由于程序間合作引起的互相制約的問題,要實作程序的同步可用一個信号量與消息聯系起來。
程序間的同步就是互相傳遞制約資訊的過程;
使用信号量可以承載制約資訊;
上面前驅圖中展現出來的制約如下:
- P1執行完P3開始執行
- P1P3執行完P2開始執行
- P2P3執行完P4開始執行
進一步展開成全是兩個程序的制約如下:
- P1 執行完後執行 P2;(S1)
- P1 執行完後執行 P3;(S2)
- P3 執行完後執行 P2;(S3)
- P2 執行完後執行 P4;(S4)
- P3 執行完後執行 P4;(S5)
每個制約用一個信号量來表示;一共五個制約,那麼就用5個信号量來表示這五個制約,P操作用于測試消息是否到達;V操作發送消息已經準備好的通知;
一共四個程序,每個程序有自己的業務邏輯
下面開始一條一條的應用制約應用制約S1
應用制約S2
應用制約S3
應用制約S4