我有一个已编译的tcl版本8.4,想要检查编译时是否设置了--enable-threads
?
或者是否有任何其他方法来获取所有传递的标志列表。 感谢
答案 0 :(得分:2)
重要提示!
Tcl 8.4不在长期支持范围内。绝对不会有任何进一步的变化,即使发现了灾难性的安全错误也没有; 如果你的问题没有被8.4.20修复,你需要转到8.5或更高版本。我们不知道有任何此类安全问题,但如果找到它们,我们不会查找也不会修复它们。
此处的支持仅限于“因为我们感觉很好”的基础。您不应基于8.4创建新作品。
当使用线程支持构建当前使用的Tcl库时,全局数组元素tcl_platform(threaded)
被定义并设置为1
。这至少从Tcl 8.4开始就是如此。以下是如何可靠地获取可以检查的漂亮布尔值:
set isThreaded [expr {
[info exist tcl_platform(threaded)] && $tcl_platform(threaded)
}]
NB:有些平台实际上总是处于线程状态(因为它们在内部工作;如果我没记错的话就是Windows和OSX的情况)。 Tcl的未来版本(8.7以后)将默认在任何地方进行线程化;这将是从9.0开始支持的唯一构建模式。您仍然需要Thread包来处理脚本中的线程,但这些日子是标准扩展。
答案 1 :(得分:1)
从8.5(TIP 59)开始,可以使用tcl::pkgconfig
检索有关构建配置的详细信息:
% tcl::pkgconfig get threaded
1
请注意,这在Tcl 8.4中不可用;如果可用,则不必防止请求不存在的数组条目tcl_platform(threaded)
。