【发布时间】:2013-05-10 11:01:09
【问题描述】:
我在 TCL 中使用多线程。我正在使用线程扩展创建一个线程。然后我向线程发送一些命令。 我还在各种文件中使用用户定义的一些程序。 我的问题:如何使主线程中的全局变量可用于子线程,而不作为参数传递或使用线程共享变量?
我不知道这些变量中有多少,因此想将它们全部导入
我尝试查找环境共享,但我得到的唯一参考是环境变量已经共享。我需要整个系统对子线程可用。
关于库,我可以简单地获取它们。
示例代码
global var1
thread::create {
source <library files >(has dummyProc definition)
<execute some statements>
}
thread::send "dummyProc arg1 arg2...argN" result
我的问题:dummyProc 使用主线程中可用的变量(例如 var1),而不使用 TSV 或将它们作为参数传递,因为会有一整套这些全局变量。
【问题讨论】:
-
请把你想要做的事情放在你原来的问题中。这样的代码很难阅读。
-
这听起来有点像您试图将常见的“共享状态”线程概念强加到 Tcl 的“消息传递”样式线程上,这是不匹配的。虽然借助变量跟踪和其他技巧(例如,通过重命名“set”并将其替换为特殊版本来查询另一个线程以获取任何请求的变量),这可能是可能的,但这可能是一个坏事主意。为什么需要允许在一个线程中访问整个环境?
标签: multithreading tcl environment