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)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
empty
5
full
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ế độ:
Bàn ăn
Nhấn vào triết gia để thay đổi trạng thái:
// Nhấn "Demo Deadlock" để xem vì sao deadlock xảy ra...