我是 Clojure 的新手。我有多个线程试图写入输出流,如果我没记错套接字并且它们的流不是线程安全的,这意味着如果我同时写入它们,位可能会混淆。clojure 的主要好处之一是对竞争条件的内置并发处理。我如何在我的场景中使用它?
我尝试研究原子、参考文献等。我最初认为将输出流声明为原子会起作用,但我不太确定,因为它似乎避免同时更改原子状态(使用交换!)但是我认为你可以从多个线程中取消引用原子,这意味着多个线程将deref 持有我的输出流的原子并同时写入它。
任何建议都将是最有帮助的。
提前致谢
(defn send-my-data [output data-bytes]
(try
(.write output)
(.flush output)
(catch Exception excp
(println (format "issue %s" (.printStackTrace excp))))
现在我所有的线程在他们想要将数据写入输出流的任何时候都会调用这个函数