Critical Section

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, ....)

  1. Tắt ngắt

disableInterrupt

criticalSection

enableInterrupt

2. Lệnh nguyên tử (Atomic Instructions)

Test-and-SetCompare-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

 

Nhanvat

Ủng hộ chúng tôi

Nếu bạn thấy nội dung hữu ích, hãy ủng hộ chúng tôi một ly cà phê nhé

Buy Me A Coffee buymeacoffee.com/invencamp