0
同期モードでスレッドにメッセージを送信し、トレース変数metohdを使用して結果を取得します。問題は、スレッドからの応答が得られないということです。通常のモード(thread :: send thread_id {command} var)でメッセージを送信すると、結果はvarに保存されます。誰かが間違っている箇所を指摘できますか?以下は私のコードを渡します:tcl thread :: send -async not works
trace add variable res write {apply {{v1 v2 op} {
upvar 1 $v1 v
puts "updated variable to $v"}}}
set th [thread::create {
puts "new thread id : [thread::id]"
proc fun {n} {
return [expr {$n*2}]
}
thread::wait
}]
# thread::send $th [list fun $t] res
thread::send -async $th [list fun 43] res
[スレッドマニュアルページ](http://www.tcl.tk/man/tcl/ThreadCmd/thread.htm)には、次のように記載されています。 "-asyncフラグが指定されている場合、コマンドは結果を待たずにそれは空の文字列を返します。あなたは何を期待していたのですか?変数はスレッド間で共有されず、スレッド間でトレースすることはできません。 –
答えをありがとう。私はしばらくしてからres値が変更され、このイベントを非同期で登録できると思っていました。 vwaitを使わずにメインスレッドにthスレッドの終わりを登録する他の方法はありますか? – MacC