Atomic operation là gì?

Noun None
Thao tác nguyên tử

Nguyên tử (atomic) có nghĩa là không thể phân chia , vì vậy một thao tác nguyên tử (atomic operation) phải được thực hiện hoàn toàn hoặc không được thực hiện hoàn toàn. Một thao tác nguyên tử (atomic operation) là một thao tác không thể được chia thành các thao tác nhỏ hơn.

Các phép toán nguyên tử cực kỳ hữu ích trong lập trình song song (parallel programming), ở đó nhiều luồng (thread) có thể truy cập đồng thời một tài nguyên được chia sẻ (shared resource) ví dụ như cơ sở dữ liệu (database).

Để hiểu lýchúng ta hãy xem xét một ví dụ đơn giản về chuyển tiền điện.

Hãy tưởng tượng một cặp vợ chồng, Alice và Bob đang mua sắm trực tuyến đồng thời.

Tài khoản ngân hàng của họ còn lại tổng cộng 100 đô la.

  • Alice mua một bộ trang điểm trị giá 100 đô la.
  • Phần mềm ngân hàng xác nhận có đủ số dư để hoàn tất giao dịch mua.
  • Vào đúng thời điểm đó, Bob mua một quả bóng đá trị giá 50 đô la.
  • Phần mềm ngân hàng kiểm tra xem có ít nhất $ 50 trong tài khoản hay không và xác nhận giao dịch mua.
  • Alice và Bob đã có thể chi 100 đô la + 50 đô la = 150 đô la, mặc dù tài khoản của họ chỉ có 100 đô la.

Alice và Bob đã có thể rút tiền vì các hoạt động giao dịch không phải là nguyên tử .

Để khắc phục vấn đề này, ngân hàng nên giới thiệu hệ thống loại trừ lẫn nhau (mutual exclusion).

Một cách để làm điều này là khóa (lock) tài nguyên được chia sẻ khi nó đang được truy cập. Tài nguyên chỉ được mở khóa khi quá trình kết thúc.

Nói cách khác, việc truy cập tài nguyên được chia sẻ (tài khoản ngân hàng) được biến thành một thao tác nguyên tử (atomic operation).

Sau khi cập nhật hệ thống ngân hàng để sử dụng các giao dịch nguyên tử, quá trình rút tiến trước đó sẽ diễn ra như sau:

  • Alice mua một bộ trang điểm trị giá 100 đô la.
  • Phần mềm ngân hàng khóa tài khoản trong kỳ giao dịch.
  • Vào đúng thời điểm đó, Bob mua một quả bóng đá trị giá 50 đô la.
  • Phần mềm ngân hàng chờ mở khóa tài khoản.
  • Giao dịch của Alice hoàn tất. Số dư giảm xuống còn 0 đô la và tài khoản đã được mở khóa.
  • Giao dịch của Bob tiếp quản và khóa tài khoản. Phần mềm ngân hàng thông báo rằng không còn tiền, do đó, làm mất hiệu lực giao dịch của Bob.
Learning English Everyday