[linux-l] ein biscchen offtopic: php Frage

Rainer Flicker r.flicker at nexgo.de
Di Nov 26 22:50:42 CET 2002


Hallo,

> Aber statistisch macht er viel weniger Fehler, als ein
> Programmierer (jedenfalls als ich :)).
dito, siehe auch mozilla-Projekt, die hatten einige Probleme. :-)

> Kennst Du Dich mit dem Kram aus (oder sonst jemand hier)? Ich hab
> auch heute wieder dadran geschraubt, aber haut einfach nicht hin.
> Hab mal das OptimizeIt Trial probiert, hilft aber nicht wirklich
> was, oder ich bin einfach zu doof. Ich glaub, mein Hauptproblem
> kommt vom CORBA ORB. Dann liegen noch Referenzen von
> "ResourceBundle" und "softCache" rum, obwohl ich sowas nie direkt
> verwende, und ein großes ByteArray, welches zu einem
> ByteArrayOutputStream gehört, daß über den ConsoleHandler
> allokiert wurde. Alles sehr merkwürdig, und google half auch
> nix. Hat jemand Tips?
Meinst Du das finden von Speicherlecks? Gibt es da nicht garbage
collectoren, die so etwas unterstützen (sgi gc, ...)?

>>Java Swing ist auch ein tolles Beispiel für design pattern. Das
>>gesamte swing beseht fast nur aus pattern. Dazu gibt es auch eine
>>interessante Präsentation von Gamma (einer der GoF). 
> Haste ein Link?
http://www.netobjectdays.org/pdf/99/djek/JavaDays99_Gamma.pdf

>>>Was ist "async-safe"?
>>
>>Für threadsafe reicht es schon sicherzustellen, dass eine Funktion
>>nur einmal gleichzeitig aufgerufen wird. Eine async-safe kann mehr-
>>mals gleichzeitig aufgerufen werden, ohne dass die Ausführung blockiert
>>wird.
> 
> 
> d.h., die Funktionen dürfen dann nicht blocken, sind damit
> deadlock sicher, ja? Wie realisiert man sowas? Wenn ich mich
> nicht irre, müßte jede Funktion, die nur lokale oder keine
> Variablen benutzt, async-safe sein, oder "zählen" auch Parameter?
> Gibt es irgendwo ne Art HOWTOs zum Thema "how to become thread
> safe"? Ich hab ein paar Bibliotheken, die ich ganz gern
> Thread-Safe hätte (linux reicht aus), kann bloß nicht ansatzweise
> schätzen, wie lange das dauern würde, und wie man prüfen kann,
> ob's funktioniert (außer massive Datentests mit verdammt vielen
> Threads, was aber auch nicht wirklich aussagekräftig sein sollte,
> da ja Synchronisationen durch Reihenfolgen auftreten könnten
> etc.). Tips?
Eine nicht-thread-safe Bibliothekfunktion kann man am einfachsten
thread-safe machen, indem man ein mutex-lock einführt. Dann hat man
natürlich das Problem, dass ein Thread, der eine Funktion aufruft,
die ein anderer Thread schon aufgerufen hat, blockiert wird.

Wie es bei OOP mit async-safe aussieht, weiss ich leider nicht,
ich kenn es nur von C. Aber da die meisten OO Programmiersprachen
eh wieder die libc verwenden, setzt sich das Problem fort (denk ich
doch).

Wenn man Referenzen auf Objekte einer auzurufenden Funktion übergibt,
dürfte es Probleme geben mit async-safe, ebenso beim Zugriff auf
Dateien, oder globale Variablen.

Grüße

Rainer








Mehr Informationen über die Mailingliste linux-l