36 在生產消費問題中,下列何者為計數器(counter)的主要功能?
(A) 記錄生產者數量
(B) 記錄消費者數量
(C) 記錄目前緩衝器中產品數量
(D) 記錄執行時間
統計: A(0), B(1), C(7), D(0), E(0) #3399883
詳解 (共 2 筆)
【第一步:找關鍵字】
關鍵字:
-
生產消費問題(Producer-Consumer Problem)
-
計數器(counter)
-
緩衝器(buffer)
? 這題關鍵是:
counter 在這個模型中是在「數什麼」
【第二步:白話翻譯】
這題在問:
? 「在一個『有人生產東西、有人拿東西』的系統中,counter 是在記什麼?」
【第三步:解題思路】
這題在考什麼觀念?
? 同步問題(Synchronization)中的共享資源管理
解題步驟
-
理解生產消費問題
-
找出 buffer 的角色
-
思考 counter 在監控什麼
原理與規則(生活比喻)
把這個問題想成「飲料販賣機」:
-
生產者 → 補飲料的人
-
消費者 → 買飲料的人
-
緩衝器(buffer) → 販賣機
-
counter → 裡面剩幾瓶飲料
? 所以 counter 是在記:
? 目前有幾個產品
【第四步:選項分析】
(A) 為什麼錯?
✘ 錯
? 不需要記生產者數量
? 系統關心的是「產品」,不是「人數」
(B) 為什麼錯?
✘ 錯
? 同理,也不需要記消費者數量
(C) 為什麼對?
✔ 正確(本題答案)
? counter 的核心用途:
記錄 buffer 裡目前有多少產品
? 用來避免:
-
overflow(放太多)
-
underflow(拿不到)
(D) 為什麼錯?
✘ 錯
? 執行時間與這個問題無關
【觀念補充與延伸】
核心觀念定位
? 作業系統 / 同步與並行(Synchronization)
? 高頻經典題
生產消費問題結構
| 元件 | 功能 |
|---|---|
| Producer | 放資料 |
| Consumer | 取資料 |
| Buffer | 存資料 |
| Counter | 記數量 |
為什麼需要 counter?
? 因為:
-
buffer 有容量限制
-
必須知道:
-
還能不能放
-
還有沒有東西可拿
-
進階觀念(重要)
通常會搭配:
-
mutex(互斥鎖):避免同時修改
-
semaphore(號誌):控制數量
觸類旁通(舉一反三)
對比概念
-
counting semaphore vs binary semaphore
? counting 用來管理數量(像 counter)
變化題型
-
問:buffer 滿時會怎樣?
? producer 要等待
【記憶口訣】
? 「counter 不數人,只數貨」
【常見陷阱】
學生最容易搞混的地方
以為在記「生產者或消費者數量」
心理盲點
看到 producer / consumer 就選人數
避坑指南
? 記住:
整個問題的核心是「產品流動」