【发布时间】:2015-02-20 17:48:47
【问题描述】:
我有一个名为“startMyProc {num}”的过程。我希望这个过程被两个不同的线程调用并等待两个线程完成。我尝试了给出的有效解决方案。我想访问 startMyProc 中的全局变量并调用另一个过程“startMyAnotherProc {num}”。如何做到这一点?
package require Thread
global myVar
set myVar false
set id1 [thread::create -joinable {
source sample.tcl
thread::wait
}]
set id2 [thread::create -joinable {
source sample.tcl
thread::wait
}]
set num 1
thread::send -async $id1 [list startMyProc $num]
set num 2
thread::send -async $id2 [list startMyProc $num]
thread::join $id1
thread::join $id2
My sample.tcl looks like this,
proc startMyProc { num } {
global myVar
puts $myVar
puts "Opening $num"
after 2000
puts "Opening $num"
after 2000
puts "Opening $num"
after 2000
startMyAnotherProc $myVar
return
}
proc startMyAnotherProc { num } {
puts "Opening Another Proc: $num"
after 2000
puts "Opening Another Proc: $num"
after 2000
return
}
【问题讨论】:
标签: multithreading tcl