Lesson 06 — Semaphore & Bài toán kinh điển
1. Semaphore — Walk-through P/V
Điều chỉnh giá trị khởi tạo rồi gọi wait(P) và signal(V) để xem giá trị semaphore thay đổi và thread nào bị block.
Thêm thread bằng ô nhập dưới
S =
2
Threads chạy:
—
Threads blocked:
—
// Nhập tên thread và bấm wait/signal để bắt đầu...
2. Producer-Consumer (Bounded Buffer)
Buffer 5 ô. Producer thêm item, Consumer lấy item. Quan sát 3 semaphore mutex, empty, full thay đổi.
mutex
1
1
empty
5
5
full
0
0
Producer
Idle
in = 0
Buffer (5 ô)
🔵 = in pointer 🟣 = out pointer
Consumer
Idle
out = 0
// Bấm Sản xuất / Tiêu thụ để xem hoạt động...
3. Dining Philosophers — Mô phỏng
Chế độ:
Nhấn vào triết gia để thay đổi trạng thái:
// Nhấn "Demo Deadlock" để xem vì sao deadlock xảy ra...