Intro Producer Consumer Mode Advantage
這篇介紹Producer Consumer Mode Advantage。
Intro
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Producer -> Buffer -> Consumer
Producer Consumer模式在軟體專案開發很常運用在現實情境。 為什麼不讓Consumer直接使用Producer的資源呢? 還要特別建立 Buffer區!
要介紹以下幾個優點: 1.Decoupling(解耦) : 增加Buffer區是為了不讓Producer、Consumer 互相依賴,若沒有Buffer區則Consumer的代碼修改,可能會影響到Producer。 在兩者依賴於Buffer區,不互相依賴的話,相對耦合也降低。
2.Concurrency(併發) : 若Producer直接呼叫Consumer的方法,由於call function是 Synchronize,在Consumer尚未return之前,Producer只能一直等待。萬一Consumer 處理很慢,Producer則會浪費時間去等待。 增加Buffer區,可將Producer和Consumer視為獨立的併發主體,Producer把產生的data往 Buffer區送,就可以繼續產生下一個data,而不用依賴Consumer的資料處理速度。
3.Support busy time : 增加Buffer區其中一個好處是,若產生data的速度時快時慢,當 data產生快時,Consumer會來不及處理,這些未處理的data將暫存在Buffer區。等Producer 產生的速度慢下來時,Consumer會慢慢處理消化data。
|