2012-08-16 23 views
5

Đây là một câu hỏi lý thuyết được thúc đẩy bởi mong muốn của tôi để hiểu được sự tương đồng của Clojure tốt hơn.Có nên đọc nhiều lần chỉnh sửa Clojure trong giao dịch để nhất quán không?

Giả sử tôi đang viết boids. Giả sử mỗi boid là một chuỗi màu xanh lá cây riêng biệt biến đổi vị trí trong một vector hoặc refs đại diện cho một mạng lưới thế giới. Hãy nghĩ đến kiến ​​của Hickey.

Hiện tại, tài liệu tại Clojure.org nói rằng "Tất cả số lần đọc tài liệu sẽ nhìn thấy ảnh chụp nhanh nhất quán của‘ Thế giới quan trọng ’làm điểm xuất phát của giao dịch (‘ điểm đọc ’).

Điều này có nghĩa là tôi chỉ có thể nhận được một bản chụp phù hợp của mô phỏng của tôi, ví dụ để rút ra nó, bằng cách đọc vector của tôi về refs trong một giao dịch (ví dụ: trong một bối cảnh dosync?)

Cảm ơn!

Trả lời

6

Bạn cần một giao dịch nếu bạn muốn có ảnh chụp nhanh nhất quán.

Nếu bạn đọc các thông số bên ngoài giao dịch, khi đó bạn sẽ chỉ nhận được giá trị tức thì tại thời điểm bạn đọc từng giá trị. Bạn không đảm bảo rằng một giao dịch khác sẽ không thay đổi một hoặc nhiều lần chỉnh sửa giữa các lần đọc của bạn, vì vậy bạn có thể kết thúc bằng một chế độ xem không phù hợp.

Các vấn đề liên quan