Synchronisation der Standardausgabe in Clojure

8

Ich habe eine Multithread-Anwendung in Clojure geschrieben. Es gibt ein Problem, einen Text in der Konsole korrekt darzustellen, wenn mehrere Threads in STDOUT schreiben. Wie kann ich das in Clojure richtig machen, damit die Zeilen nicht interlaced aussehen? Ich denke, dies würde eine Art von separaten IO-Agenten beinhalten, aber ich bin mir nicht sicher, wie ich das machen soll.

    
bvk256 07.12.2011, 16:54
quelle

1 Antwort

9
  

Ich denke, das würde eine Art von separatem IO-Agenten beinhalten

Ja, das sollte funktionieren. Erstellen Sie einen Agenten (def printer (agent nil)) und rufen Sie ihn mit der entsprechenden print -Anweisung auf, z. B. (send printer #(println msg)) . Die Nachrichten werden in eine Warteschlange eingereiht und nacheinander (asynchron) ausgeführt.

Zum Protokollieren können Sie sich auch tools.logging anschauen, das Agenten unter der Haube verwendet.

    
Jonas 07.12.2011, 17:52
quelle

Tags und Links