interp limit
お子様通訳をご利用の際にご利用いただけます。
これにより、キャッシュ不能エラーがスローされることに注意してください。クリーンアップを行いたい場合は、親インタープリターの制限を削除してください。
set interp [interp create]
# initialize the interp
interp eval $interp {
source somestuff.tcl
}
# Add the limit. From now you have 60 seconds or an error will be thrown
interp limit $interp time -seconds [clock seconds] -milliseconds 60000
set errorcode [catch {interp eval {DoExpensiveStuff}} res opts]
# remove the limit so you can cleanup the mess if needed.
interp limit $interp time -seconds {}
if {$errorcode} {
# Do some cleanup here
}
# delete the interp, or reuse it?
interp delete $interp
# And what shall be done with the error? Throw it.
return -options $opt $res
リソース制限は Tcl での最善の策ですが、万能ではありません。Tcl は C プロシージャをアボートできません (アボートしません)。Tcl コアにハードワークを実行させる方法がいくつかあります。