私はClojureの初心者のようなものです。出力ストリームに書き込もうとしている複数のスレッドがあり、ソケットとそれらのストリームがスレッドセーフではない場合、それらに同時に書き込むとビットが混同される可能性があります。clojure の主な利点の 1 つは、競合状態の同時実行処理が組み込まれていることです。これを自分のシナリオでどのように利用できますか?
アトムや参照などを調べてみました。私は当初、出力ストリームをアトムとして宣言することでうまくいくと思っていましたが、(スワップを使用して) アトムの状態を同時に変更することを回避しているように見えるため、よくわかりませんが、複数のスレッドからアトムを逆参照できると思います。つまり、複数のスレッドが出力ストリームを保持しているアトムを逆参照し、同時に書き込みます。
どんなアドバイスも最も役に立ちます。
前もって感謝します
(defn send-my-data [output data-bytes]
(try
(.write output)
(.flush output)
(catch Exception excp
(println (format "issue %s" (.printStackTrace excp))))
これで、出力ストリームにデータを書き込みたいときはいつでも、すべてのスレッドがこの関数を呼び出します