Thread Save - Trigger & Interprozess Variablen

Ich habe eine Frage zu Thread-Save Code und Triggern:

In der Doku steht:

Bei einer Methode mit einem Befehl, der Trigger aufrufen kann, bewertet der 4D Compiler zum Überprüfen der Thread-Sicherheit der Methode die Thread-Sicherheit des Trigger:

Verstehe ich das richtig: wenn in der Trigger-Methode Intperprozess-Variablen verwendet werden, dann läuft sowohl der Trigger als auch der übergeordnete Code (Prozess) auf der Client-Seite immer im kooperativen Modus?

Wenn ja: dann würde das bedeuten, dass Interprozess-Variablen in Trigger-Methoden so richtig tolle Performance-Bremsen sein können?

Oder verstehe ich da etwas falsch?

das ist richtig. Ist der Trigger nicht Thread-Save, kann auch die aufrufende Methode nicht thread-save laufen. Egal, ob wegen enthaltener Befehle oder <>Variablen.

ok, vielen Dank für die Bestätigung.

Before v17 R4. The client side processes are always cooperative.

In v17 R4, you must define, when you launch a new process (or a worker) that the method must run in preemptive. This is done by checking the “Can be run in preemptive mode” option in the method attribute. This is the same, before v17 R4, when executing code on the server.

You can then do a syntax check and the compiler will list you any non thread-safe error.

Also, a SAVE RECORD or a DELETE RECORD performed on the client side, are always cooperative, no matter if the trigger is thread-safe or not. In contrary of a QUERY which, even if performed on the client side, will be executed in preemptive on the server side.

Hope this helps.

Hi Gabriel,

Thanks for your answer, things look a bit clearer to me now.

Best,

Olivier