Thread erstes Zeichen - prüfen (15 answers)
Opened by jan999 at 2010-01-04 15:43

MatthiasW
 2010-01-04 20:46
#130021 #130021
User since
2008-01-27
367 Artikel
BenutzerIn
[default_avatar]
2010-01-04T18:31:30 sid burn
Threads arbeiten ja in gewisser weise Parallel und da die variablen global sind kann es rein theoretisch sein das du ein Match bei einer Regex hast und diese $1, $2, $3 etc. setzt und dann direkt danach ein anderer Thread seine arbeit verichtet und dort eine neue Regex ausgeführt wird und $1, $2, ... neu setzt.

Von daher wenn du soetwas hast musst du die match variablen vorher locken.

Allerdiengs ist das jetzt allgemein für Threads gesehen. Ich weiß nicht wie das genau bei Perl mit seinem ithreads ist.

afaik sollte man keine Probleme mit irgendwelchen globalen Variablen bekommen. Bei der Erstellung eines Threads übernimmt dieser zwar die aktuellen Werte der globalen Variablen, aber er besitzt seine eigenen Kopien und kann daher keinen anderen Thread dermaßen beeinflussen.
edit: ein lock() ist hier also nicht nötig, und funktioniert auch nicht, weil die Variablen nicht ge-share()-ed sind.

MfG
Last edited: 2010-01-04 20:50:17 +0100 (CET)
perl -E'*==*",s;;%ENV=~m,..$,,$&+42;e,$==f;$"++for+ab..an;@"=qw,u t,,print+chr;sub f{split}say"@{=} me"'

View full thread erstes Zeichen - prüfen