Tôi có một ứng dụng đa luồng được viết bằng Clojure. Có một vấn đề làm cho một văn bản trong giao diện điều khiển hiển thị chính xác khi nhiều chủ đề ghi vào STDOUT. Làm thế nào tôi có thể làm điều này một cách chính xác trong Clojure, do đó, các dòng sẽ không nhìn interlaced? Tôi nghĩ rằng điều này sẽ liên quan đến một số loại đại lý IO riêng biệt, nhưng tôi không thực sự chắc chắn làm thế nào để làm điều đó.Đồng bộ hóa đầu ra tiêu chuẩn trong Clojure
8
A
Trả lời
9
Tôi nghĩ rằng đây sẽ bao gồm một số loại riêng biệt IO đại lý
Vâng, đó là nên làm việc. Tạo một đại lý (def printer (agent nil))
và gọi nó bằng tuyên bố print
thích hợp, ví dụ: (send printer #(println msg))
. Các thông điệp được đặt trong một hàng đợi và được thực hiện (không đồng bộ) một tại một thời điểm.
Vì mục đích ghi nhật ký, bạn cũng có thể xem tools.logging
sử dụng tác nhân dưới mui xe.
Các vấn đề liên quan
- 1. Tiêu chuẩn cho Clojure?
- 2. chuyển hướng đầu ra tiêu chuẩn bằng c sau đó đặt lại đầu ra tiêu chuẩn
- 3. Java Runtime.exec() đầu ra không đồng bộ
- 4. Chụp nội dung của đầu ra tiêu chuẩn trong C#
- 5. đầu ra lệnh chuyển hướng thành đầu ra biến đổi và tiêu chuẩn trong ksh
- 6. Đồng bộ hóa hai mục tiêu trong Xcode 4
- 7. Đầu ra tiêu chuẩn Qt. cout không in
- 8. ProcessBuilder được chuyển hướng đến đầu ra tiêu chuẩn
- 9. Tiêu chuẩn mã hóa mục tiêu-C?
- 10. Chuyển hướng đầu ra tiêu chuẩn sang syslog
- 11. truy cập đồng bộ trong clojure
- 12. Ngăn Ghostscript ghi các lỗi vào đầu ra tiêu chuẩn
- 13. Vô hiệu hóa bộ đệm đầu ra
- 14. Kiểu mã hóa F # và tiêu chuẩn
- 15. Đồng bộ hóa cuộc gọi không đồng bộ trong C#
- 16. đồng bộ hóa (this) vs đồng bộ hóa (MyClass.class)
- 17. Đơn vị đầu vào và đầu ra tiêu chuẩn trong Fortran 90?
- 18. Vô hiệu hóa bộ đệm đầu ra trong PHP
- 19. Chuẩn hóa cục bộ trong OpenCV
- 20. Mẫu thiết kế đồng bộ hóa đồng bộ hóa tối ưu hóa
- 21. Tiêu chuẩn mã hóa cho MVC - Chúng có phải là tiêu chuẩn chính thức không?
- 22. Đồng bộ hóa IMAP
- 23. Ngăn vòng lặp đồng bộ hóa mạng khi đồng bộ hóa từ mạng trong Android ContentProvider
- 24. cách bật đồng bộ hóa dọc trong opengl?
- 25. Tiêu chuẩn mã hóa Haskell tốt
- 26. Đồng bộ hóa trong Vectors trong Java
- 27. Tiêu chuẩn kiểu mã hóa cho Android
- 28. Tệp zip và in ra tiêu chuẩn
- 29. Đồng bộ hóa địa chỉ trong iOS
- 30. Cách chuyển hướng đầu vào và đầu ra tiêu chuẩn bằng Bash
Tác phẩm này hoạt động, ngoại trừ tôi phải gửi cho tác nhân tác vụ in thông qua một proxy chức năng khác. Việc gửi bản in trực tiếp tới đại lý sẽ không hoạt động vì một số lý do. – bvk256
Trong [bài viết này] (http://clojure.org/agents) trên trang web của Clojure, nó có nội dung: "Các tác vụ được gửi đến đại lý từ một ** tác nhân đơn lẻ khác ** sẽ xảy ra theo thứ tự đã gửi, ** có khả năng xen kẽ ** với các hành động được gửi đến cùng một tác nhân ** từ các nguồn khác **. " Điều này có nghĩa là vẫn có thể có vấn đề khi "** nhiều chủ đề ** ghi vào STDOUT"? –