Tcl TSV是否支持通过词典

时间:2017-03-29 01:21:58

标签: multithreading tcl

我想通过TSV共享一个dict类型变量,但是TSV文档没有显示对DICT的任何支持。是否有一些替代方法可以通过线程共享DICT变量?

1 个答案:

答案 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相似的最后更新时间 - 并且不提供字典的特定操作。)