2012-05-12T19:18:35
tonewheelOk. Ist das abhaengig von den Compiler-Optionen beim Compilieren des Perl-Interpreters?
Genau. Wenn perl Threadsafe kompiliert wurde dann funktioniert dein Code. Andernfalls gibt es es eine globale Variable in der Das Interpreter-"Objekt" sich befindet. Dann muss dieses nicht an alle Funktionen übergeben werden. Das macht perl schneller, ist aber nicht threadsafe. Praktisch alle perl-Interpreter sind so kompiliert. Das bedeutet aber nicht das du keine Thread im C-Code nutzen kannst, das bedeutet vielmehr das nur ein Thread mit dem Interpreter interagieren darf.
2012-05-12T19:18:35
tonewheelInteressant, das die Lib zur Laufzeit erzeugt wird. Nur woher weiss Perl beim naechsten Start, wo diese zu finden bzw. wie diese zu starten ist?
Eine ausführliche Beschreibung wie das funktioniert findest du in der Moduldokumentation.
Kurz Zusammengefasst:
Wenn kein Basispfad festgelegt wurde, wird einer der im Modul voreingestellten genutzt. Dort wird zum Dateinamen ein Ordner Angelegt und darin ein Ordner dessen Name ein MD5-Wert des C-Codes ist. Darin befindet sich alles was zum Compilieren und nutzen des Codes gebraucht wird. Ändert sich der Dateiname oder der C-Code nicht, so wird das schon kompilierte gefunden und genutzt.