Với Clojure (và các phương ngữ Lisp khác) bạn có thể sửa đổi mã đang chạy. Vì vậy, khi một hàm được sửa đổi trong thời gian chạy là thay đổi có sẵn cho nhiều luồng không?Các chức năng được sửa đổi như thế nào tại thời gian chạy sau đó được truyền cho nhiều luồng?
Tôi đang cố gắng tìm ra cách thức hoạt động về mặt kỹ thuật trong một khung cảnh đồng thời: nếu một số đề đang sử dụng một hàm foo, những gì xảy ra khi tôi xác định lại (nói bằng defn) chức năng foo?
Có một số việc đồng bộ hóa đang diễn ra: khi nào và làm thế nào để đồng bộ hóa như vậy xảy ra và chi phí là bao nhiêu?
Nói trên JVM, là hàm được tham chiếu sử dụng tham chiếu volatile
? Nếu vậy, có nghĩa là mỗi lần có một "tra cứu chức năng" thì một người phải trả chi phí volatile
?
+1 và cảm ơn vì luôn hữu ích về Clojure (và các chủ đề khác;) Điểm đầu tiên của bạn là một câu hay hai điểm đầu tiên được hợp nhất với nhau trong một đoạn? Tôi nghĩ bạn có ý định viết một cái gì đó hơi khác một chút:) –
Tôi dự định học tất cả, nhưng con đường thì khá dài;) –
@cedric Martin, tôi sẽ cho người khác vượt qua mặc dù máy ngữ pháp ... ;-) –