TCLには、変数の変更をポーリングした後で一定のアクションを実行するメカニズムがあります。TCLで変数が変更されたときに特定のアクションを実行
私はについて読んでいますが、スクリプトを一時停止しています。私は、スクリプトが実行され、その間に変数値が変更された場合、特定のアクションを実行します。
vwaitの非同期モードの種類。
TCLには、変数の変更をポーリングした後で一定のアクションを実行するメカニズムがあります。TCLで変数が変更されたときに特定のアクションを実行
私はについて読んでいますが、スクリプトを一時停止しています。私は、スクリプトが実行され、その間に変数値が変更された場合、特定のアクションを実行します。
vwaitの非同期モードの種類。
変数をトレースすることで、変数が変更されるたびに(またはフラグに応じて読み書きが行われるたびに)何かを行うことができます。この例を試してみてください:
set abc 123
proc exampleCallback args {
global abc
puts "The variable abc is now $abc"
}
trace add variable abc write exampleCallback
incr abc
incr abc
incr abc
ローカル変数をトレースすることは可能ですが、お勧めできません。また、内部では、vwait
コマンドは、変数が書き込まれるときにフラグをトリップするトレースを設定します。そのフラグは、イベント・ループが戻されたときに待機することを通知します。そのトレースは、スクリプトレベルのAPIではなく、TclのC APIを使用して設定されます。
また、再帰的プロシージャを使用して、変数の現在の値を特定の間隔でポーリングし、変数の特定の条件が満たされると再帰が行われます。例については
:
set x 1
proc CheckVariableValue {
global x
if { $x >= 5 } {
puts "end"
return 1;
}
else{
incr x
puts $x
after 1000 CheckVariableValue
}
}
CheckVariableValue