Clojure (およびその他の Lisp 方言) を使用すると、実行中のコードを変更できます。では、実行時に関数が変更された場合、その変更は複数のスレッドで利用可能になるのでしょうか?
並行設定で技術的にどのように機能するかを理解しようとしています.複数のスレッドが関数 foo を使用している場合、関数fooを再定義すると(たとえばdefnを使用すると)どうなりますか?
何らかの同期が行われている必要があります。そのような同期はいつ、どのように行われ、どのような費用がかかりますか?
JVM で言えば、関数は参照を使用してvolatile
参照されていますか? もしそうなら、「関数検索」があるたびにvolatile
コストを支払わなければならないということですか?