Trung BìnhOperating System iconOperating System

Monitor pattern là gì? Cách implement producer-consumer problem?

Monitor là high-level synchronization construct: object chứa mutex (đảm bảo mutual exclusion) + condition variables (cho phép threads wait/notify). Producer-Consumer problem: producer thêm item vào bounded buffer, consumer lấy ra; khi buffer đầy producer phải chờ; khi buffer rỗng consumer phải chờ. Implement với Java (built-in monitor):

java
synchronized void produce(Item item) {
    while (buffer.isFull()) wait(); // release lock, wait
    buffer.add(item);
    notifyAll(); // wake up waiting consumers
}
synchronized Item consume() {
    while (buffer.isEmpty()) wait();
    Item item = buffer.remove();
    notifyAll(); // wake up waiting producers
    return item;
}

Go implementation thường dùng channel:

go
ch := make(chan Item, bufferSize)
// Producer
ch <- item
// Consumer
item := <-ch

Go channel built-in implement producer-consumer pattern với blocking semantics. Semaphore approach: dùng counting semaphore empty (=N) và full (=0) + mutex — classic Dijkstra solution. Java BlockingQueue: production-ready implementation.

Xem toàn bộ Operating System cùng filter theo level & chủ đề con.

Mở danh sách Operating System