interrupt_operator
— Abbrechen eines in einem anderen Thread laufenden Operators.
interrupt_operator
versucht den derzeit im Thread
HThreadID
laufenden Operator zu unterbrechen.
Wenn der derzeit laufende Operator unterbrechbar ist, wird er
die Ausführung auf die in Mode
gesetzte Art abbrechen
(siehe Unten).
Wenn der derzeit laufende Operator nicht unterbrechbar ist,
oder wenn derzeit kein Operator in HThreadID
läuft,
hat interrupt_operator
keine Auswirkung.
Insbesondere wird die Ausführung späterer Operatoren nicht
beeinflusst.
Das einen Thread repräsentierende Handle kann mittels
get_current_hthread_id
ermittelt werden.
interrupt_operator
unterstützt momentan nur eine Art von
Unterbrechung, die in Mode
gesetzt werden kann.
Es ist zu beachten, dass der im anderen Thread laufende, abzubrechende
Operator die entsprechende Unterbrechbarkeit ebenfalls unterstützen muss.
Ob ein Operator unterbrechbar ist, und welche Arten der
Unterbrechbarkeit er unterstützt, kann im Abschnitt
Äusführungsinformationen" in der Referenzdokumentation des
Operators eingesehen oder mit Hilfe des Parameters
'interrupt_mode' des Operators
get_operator_info
ausgelesen werden.
Einige Operatoren, für die in der Referenzdokumentation keine Unterbrechbarkeit angegeben ist, können dennoch an einigen Stellen ihrer Ausführung unterbrochen werden. Derartige Unterbrechbarkeiten sind allerdings nicht garantiert und können sich zwischen verschiedenen HALCON-Versionen ohne weitere Ankündigung verändern.
Bricht die Ausführung des Operators ab. Alle eventuell bisher berechneten Zwischenergebnisse werden verworfen und der Operator gibt den Fehlercode H_ERR_CANCEL (22) zurück.
Nicht alle Operatoren sind unterbrechbar. Wenn ein Operator unterbrechbar ist, ist dies im Abschnitt über Ausführungsinformationen in dessen Referenzdokumentation vermerkt.
Es gibt keine Garantie über die Granularität der Unterbrechungen. Diese kann vom Operator, dessen Eingabedaten und dem ausführenden System abhängen. Üblicherweise ist die Granularität besser als 10 ms.
HThreadID
(input_control) integer →
(integer)
Zu unterbrechender Thread.
Mode
(input_control) string →
(string)
Art der Unterbrechung.
Defaultwert: 'cancel'
Werteliste: 'cancel'
global tuple HThreadID get_current_hthread_id (HThreadID) * call some slow operator... * In a different thread wait_seconds(2) * Interrupt the long-running operator in the other thread interrupt_operator (HThreadID, 'cancel')
Wenn alle Parameter gültig sind liefert interrupt_operator
den Wert 2 (H_MSG_TRUE) zurück. Andernfalls wird eine Fehlerbehandlung durchgeführt.
get_current_hthread_id
,
set_operator_timeout
Foundation