Critical Section là phần đoạn mã chạy dùng tài nguyên (đoạn mã này cần được thực thi liên tục), không cho phép có tác nhân khác chen ngang (ngắt, thread, task,...) để tránh đột ngột làm thay đổi giá trị trong tài nguyên (biến toàn cục, bộ nhớ, thanh ghi, ....)
- Tắt ngắt
disableInterrupt
criticalSection
enableInterrupt
2. Lệnh nguyên tử (Atomic Instructions)
Test-and-Set, Compare-and-Swap, hoặc LDREX/STREX
Ưu điểm: Không cần tắt ngắt
Nhược điểm: Chỉ hỗ trợ trên một số vi điều khiển