Tcl 9.0 的其中一個改變,就是移除了 --disable-threads 編譯選項,所以從 9.0.0 開始都會是 thread-enabled。不過也因為如此,如果你使用下列的方式檢查:
expr {[info exists ::tcl_platform(threaded)] && $::tcl_platform(threaded)}
在 Tcl 9 會得到答案為 0,因為 ::tcl_platform(threaded) 在 Tcl 9 中並不存在。
所以我改寫如下:
#
# Check support thread or not
#
proc is_threaded {} {
# Tcl 9 always thread-enabled
if {[package vcompare [info patchlevel] "9.0"] < 0} {
return [expr {[info exists ::tcl_platform(threaded)] && $::tcl_platform(threaded)}]
} else {
return 1
}
}
目前暫時先這樣,如果有更好的寫法我再更改寫法。
2024/11/16 更新寫法,嘗試使用 package vcompare 來比對版本號。
沒有留言:
張貼留言