PB 4.20 Crash mit Option Threadsafe

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
freak
PureBasic Team
Beiträge: 766
Registriert: 29.08.2004 00:20
Wohnort: Stuttgart

Beitrag von freak »

Die Befehle werden damit auch Threadsafe, aber nur soweit man nicht versucht auf das gleiche Objekt in 2 threads zuzugreifen:

2 images manipulieren in 2 threads: ok
1 image in 2 threads gleichzeitig verwenden: geht nicht

Wie es bei der Console ist weis ich nicht. Ist ja auch im Primzip eine gemeinsame Resource wie z.b. eine Datei.
Ich kann mir das nach dem Wochenende mal genauer ansehen.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

freak hat geschrieben:Wie es bei der Console ist weis ich nicht. Ist ja auch im Primzip eine gemeinsame Resource wie z.b. eine Datei.
Ja, deshalb dachte ich das die Libs mit Threadsafe das intern managen,
z.b. über einen Mutex o.ä., so dass der String geschrieben wird, und erst
dann der nächste Thread auf die Console zugreifen kann.
Bei Dateien stelle ich mir das auch so vor, dass man aus mehreren Threads
mit WriteString ins gleiche Logfile schreiben kann.
Der interne Zugriff auf das Handle (File, Console, ...) müsste dann
abgesichert werden, während ein Befehl ausgeführt wird.

Das wäre jedenfalls das was ich unter threadsicher verstehe.

Wenn es nicht so ist, dann muß man das nur wissen. Macht dann halt
bissl mehr Arbeit es selbst abzusichern, aber OK wenn man es weiß.
freak hat geschrieben:Ich kann mir das nach dem Wochenende mal genauer ansehen.
Danke! Wäre nett von Dir wenn Du dann nochmal bescheid geben kannst,
oder das vielleicht nochmal offiziell dokumentiert wird (welche Befehle/Libs
sind richtig threadsicher).
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
freak
PureBasic Team
Beiträge: 766
Registriert: 29.08.2004 00:20
Wohnort: Stuttgart

Beitrag von freak »

Alle File-Befehle über einen Mutex abzusichern, was sich auf alle in PB geschriebenen Programme
auswirkt nur weil einer auf die Idee kommen könnte aus 2 Threads in die selbe Datei zu schreiben wäre overkill.

Der Threadsafe-modus beschränkt sich darauf abzusichern das die Befehle einer Lib sich
gegenseitig nicht in die Quere kommen wenn sie eigentlich verschiedene Dinge tun.
(z.B. das Object Management: ein Thread bearbeitet gerade ein Image während ein zweiter gerade ein neues erstellt)

Wenn man dann das selbe Objekt aus 2 Threads bearbeiten will muss man eben selbst mit
den Mutex-Befehlen für Schutz sorgen.
Nur so ist es möglich die Befehle auch in Threads noch ohne allzugroße Geschwindigkeitsverluste auszuführen.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

freak hat geschrieben:Der Threadsafe-modus beschränkt sich darauf abzusichern das die Befehle einer Lib sich
gegenseitig nicht in die Quere kommen wenn sie eigentlich verschiedene Dinge tun.
(z.B. das Object Management: ein Thread bearbeitet gerade ein Image während ein zweiter gerade ein neues erstellt)

Wenn man dann das selbe Objekt aus 2 Threads bearbeiten will muss man eben selbst mit
den Mutex-Befehlen für Schutz sorgen.
Nur so ist es möglich die Befehle auch in Threads noch ohne allzugroße Geschwindigkeitsverluste auszuführen.
OK, vielen Dank freak! Ich denke nun verstanden zu haben was mit
threadsicher genau gemeint ist.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Antworten