Nội dung
Danh sách bài học
- 01~6 phút
Tổng quan module — Đồng bộ & Phối hợp
Hai luồng cùng đụng một dữ liệu — mọi bài toán khó của concurrency bắt đầu từ đây. Lộ trình module: race condition, atomic/mutex, deadlock, IPC.
- 02~12 phút
Race condition — vì sao count++ sai khi hai luồng đua nhau
Vì sao count++ không nguyên tử, interleaving sinh ra kết quả sai thế nào, và vì sao bug race chỉ xuất hiện một phần triệu lần chạy — khó tái hiện nhất.
- 03~13 phút
Mutex & atomic (CAS) — bảo vệ critical section khỏi race
Hai công cụ chặn race: phép toán atomic (CAS) và mutex (khoá vùng găng) — cơ chế, chi phí, khi nào dùng cái nào, và lựa chọn thứ ba: đừng chia sẻ.
- 04~13 phút
Deadlock — bốn điều kiện Coffman và cách phá vòng chờ
Hai luồng giữ khoá chờ nhau mãi mãi: 4 điều kiện Coffman để deadlock xảy ra, cách nhận diện qua thread dump, và phòng ngừa bằng lock ordering.
- 05~12 phút
IPC — pipe, shared memory và socket giữa hai tiến trình
Khi hai tiến trình cần nói chuyện: pipe, shared memory (nhanh nhất nhưng cần đồng bộ), socket (linh hoạt nhất) — chi phí và mô hình chia sẻ của từng cách.
- 06~18 phút
Mini-challenge — săn race và deadlock
Cho một chương trình có cả race condition lẫn deadlock: tái hiện bug, chỉ ra interleaving gây lỗi, và sửa bằng đúng công cụ (atomic, mutex, lock ordering).
- 07~6 phút
Tổng kết module — Đồng bộ & Phối hợp
Cheat sheet race, mutex/atomic (CAS), deadlock (Coffman, lock ordering), chi phí futex và IPC; kèm glossary, pitfall và self-assessment module.