我想通过TSV共享一个dict类型变量,但是TSV文档没有显示对DICT的任何支持。是否有一些替代方法可以通过线程共享DICT变量?
答案 0 :(得分:1)
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
}
在很多方面,像tsv::lappend
这样的基于列表的命令是基本的get
/ set
模式的包装器,而不是这样,除了包装器是用C语言编写的。 (TSV子包相当陈旧 - 它提供的API使我认为它具有与Tcl 8.4相似的最后更新时间 - 并且不提供字典的特定操作。)