0
TSVでdict型変数を共有したいのですが、TSVのドキュメントにはDICTのサポートが表示されません。スレッドを通じてDICT変数を共有する別の方法がありますか?Tcl TSVサポートの渡し辞書
TSVでdict型変数を共有したいのですが、TSVのドキュメントにはDICTのサポートが表示されません。スレッドを通じてDICT変数を共有する別の方法がありますか?Tcl TSVサポートの渡し辞書
TSV sub-packageには特別なサポートはありません。あなたは通常、そのようなことのためにtsv::array
を使用します。しかし、値をロック内の文字列として取り込み、辞書として処理し、結果を書き戻すこともできます。多くの点で
# assuming that the main thread shared variable is called FOO and we're using the BAR element of it
tsv::lock FOO {
# Read the dictionary out
set mycopy [tsv::get FOO BAR]
# Do some complicated operation
dict set mycopy "grill" [expr {2**[dict get $mycopy "quux"]}]
# Write the updated dictionary back
tsv::set FOO BAR $mycopy
}
ラッパーがあなたのためにCで書かれている以外、tsv::lappend
などのリストベースのコマンドは、むしろ、そのような基本的なget
/set
パターンのラッパーです。 (TSVサブパッケージはかなり古くなっています - それが提供するAPIは、Tcl 8.4と同様の最終更新日を持つと思うし、辞書のための特定の操作を提供しません)。
TSVでのキー付きリストのサポートそれらは辞書と構文的に異なりますが、同様の基本操作を提供します。 (私は最初の 'dict'実装を行うときにその構文を使用することを考えましたが、代わりに他のことを可能にしたためではありませんでした。) –
答えに感謝します。これは、TSVがマスターとワーカースレッド間で参照データを共有する正しい方法ではないことを意味しますか?それを行う良い方法はありますか? – Jonjilla