2016-07-21 2 views
2

TCL에서 변수 변경에 대한 폴링을 유지하고 그 후에 특정 작업을 수행하는 메커니즘이 있습니다.TCL에서 변수가 변경 될 때 특정 작업 수행

나는 에 대해 읽었지만 스크립트를 일시 중지하고 있습니다. 변수 값이 변경되면 스크립트가 실행되고 그 사이에 특정 작업을 수행합니다.

vwait의 종류가 비동기입니다.

답변

4

변수가 변경 될 때마다 (또는 플래그에 따라 읽기 또는 삭제 될 때) 즉시 조치를 취할 수 있도록 변수에 추적을 첨부 할 수 있습니다. 다음 예를 시도해보십시오.

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를 사용하여 설정됩니다 ...

0

또한 특정 간격의 변수의 현재 값에 대한 폴링을 유지하기 위해 재귀 프로 시저를 사용할 수도 있습니다. 변수에 대한 특정 조건이 충족되면 재귀. 예를 들어

:

set x 1 
proc CheckVariableValue { 
    global x 
    if { $x >= 5 } { 
     puts "end" 
     return 1; 
    } 
    else{ 
     incr x 
     puts $x 
     after 1000 CheckVariableValue 
    } 
} 
CheckVariableValue 
관련 문제