Hallo,
bei CoDeSys gibt es den Hinweis, dass die String Funktionen aus der Standard lib nicht "wieder-eintritt-sicher" sind, und somit nicht in unterschiedlichen Tasks verwendet werden sollen.
z.Bsp. hier bei Twincat
Stringfunktionen
Bitte beachten:
String-Funktionen sind nicht sicher bei Taskwechsel: Bei der Verwendung von Tasks dürfen String-Funktionen nur in einer Task eingesetzt werden. Wird die gleiche Funktion in verschiedenen Tasks benützt, besteht die Gefahr des Überschreibens.
Hat sich jemand schon mal damit auseinander gesetzt? Hat jemand den technischen Hintergrund parat?
Im Prinzip ist die Sache ja klar, aber ich wollte mal fragen wie es andere Programmierer handhaben. Im Netz findet man sehr wenig (eigentlich nix) dazu, so ist es, denke ich, auch mal ein interessantes für dieses Forum.
Wir erstellen Bibliotheken und haben in der Vergangenheit, unwissend, auch die String Funktionen aus der Standard lib darin verwendet. Nun kann ich ja nicht vorhersehen ob der Anwender mehrere Tasks verwendet, was aber sehr wahrscheinlich ist, geschweige denn ihn darauf hinzuweisen, dass er bestimmte Funktionen nur in der selben Task verwenden soll wie meine POUs. Auf der anderen Seite sollte es schon mit Teufel zugehen, dass ich just in dem Moment wo diese String funktion abgearbeitet wird (dauert ja auch keine Ewigkeit), die aufrufende Task unterbrochen wird und genau diese Funktion in der unterbrechenden Task verwendet wird. Aber ..., der Teufel ist ein Eichhörnchen. ;)
Lange Rede, kurzer Sinn: In Bibliotheken sollte man auf diese String Funktionen verzichten. Gelle?
Was verwendet ihr so standardmäßig für Funktionen bei der Verwendung von Strings? Es gibt ja die StringUtils library, welche auch noch performanter sein soll und mehr Funktionen bietet. ich denke, darauf wir es hinauslaufen, dass wir in unseren Guidelines die Verwendung der Standard lib untersagen und Alternative zum "selber-basteln" auf die StringUtils verweisen.
bei CoDeSys gibt es den Hinweis, dass die String Funktionen aus der Standard lib nicht "wieder-eintritt-sicher" sind, und somit nicht in unterschiedlichen Tasks verwendet werden sollen.
z.Bsp. hier bei Twincat
Zitat:
Stringfunktionen
Bitte beachten:
String-Funktionen sind nicht sicher bei Taskwechsel: Bei der Verwendung von Tasks dürfen String-Funktionen nur in einer Task eingesetzt werden. Wird die gleiche Funktion in verschiedenen Tasks benützt, besteht die Gefahr des Überschreibens.
Im Prinzip ist die Sache ja klar, aber ich wollte mal fragen wie es andere Programmierer handhaben. Im Netz findet man sehr wenig (eigentlich nix) dazu, so ist es, denke ich, auch mal ein interessantes für dieses Forum.
Wir erstellen Bibliotheken und haben in der Vergangenheit, unwissend, auch die String Funktionen aus der Standard lib darin verwendet. Nun kann ich ja nicht vorhersehen ob der Anwender mehrere Tasks verwendet, was aber sehr wahrscheinlich ist, geschweige denn ihn darauf hinzuweisen, dass er bestimmte Funktionen nur in der selben Task verwenden soll wie meine POUs. Auf der anderen Seite sollte es schon mit Teufel zugehen, dass ich just in dem Moment wo diese String funktion abgearbeitet wird (dauert ja auch keine Ewigkeit), die aufrufende Task unterbrochen wird und genau diese Funktion in der unterbrechenden Task verwendet wird. Aber ..., der Teufel ist ein Eichhörnchen. ;)
Lange Rede, kurzer Sinn: In Bibliotheken sollte man auf diese String Funktionen verzichten. Gelle?
Was verwendet ihr so standardmäßig für Funktionen bei der Verwendung von Strings? Es gibt ja die StringUtils library, welche auch noch performanter sein soll und mehr Funktionen bietet. ich denke, darauf wir es hinauslaufen, dass wir in unseren Guidelines die Verwendung der Standard lib untersagen und Alternative zum "selber-basteln" auf die StringUtils verweisen.