Atomicity là gì?
- ★
- ★
- ★
- ★
- ★
Tính nguyên tử (atomicity) là nếu ngay cả một phần của transaction không thành công thì toàn bộ transaction không thành công. Theo cách này, mọi transaction phải thành công 100% để được cam kết thành công với cơ sở dữ liệu (database).
- ★
- ★
- ★
- ★
- ★
Trong lập trình tính nguyên tử (atomicity) là việc thực hiện một chuỗi các bước, được gọi là hành động, để chúng dường như được thực hiện như một bước duy nhất không thể phân chia. Chúng ta sẽ xem một ví dụ, chúng ta có thể hiểu rõ về tính nguyên tử (atomicity) trong lập trình. Giả sử trong một ứng dụng đa luồng (multithreading), một hàm (function) đang tăng một biến toàn cục / tĩnh (global variable / static variable).
count++; // count has permanent storage in RAM
Câu lệnh (statement) trên có thể được phân tích thành ít nhất là ba phép toán.
- Tìm nạp giá trị count
- Tăng giá trị count
- Lưu trữ giá trị được cập nhật
Nếu một luồng (thread) thực thi hàm chứa câu lệnh trên đang tìm nạp giá trị của count (giả sử 2). Có thể tại điểm thực thi này, luồng có thể được ưu tiên và một luồng khác có thể gọi cùng một hàm. Do đó, giá trị của count sẽ được tăng lên 3. Khi luồng cũ được tiếp tục, nó vẫn giữ giá trị trước đó (2) thay vì giá trị mới nhất (3) và kết thúc bằng cách viết ngược lại 3 một lần nữa. Trong thực tế, giá trị của count phải là 4.
Learning English Everyday