[linux-l] ein biscchen offtopic: php Frage

Steffen Dettmer steffen at dett.de
Mo Nov 25 23:32:10 CET 2002


* Rainer Flicker wrote on Mon, Nov 25, 2002 at 22:49 +0100:
> > Ja, könnte man denken, stimmts? Ist auch nicht einfach zu
> > untersuchen, was da nu warum rumliegen bleibt und überhaupt...
> > Jedenfalls hat auch JDK-1.4 Bugs, ist ja auch klar.

> Ok, der garbage collector ist nicht so gut wie ein Programmierer,
> der weiß, wann ein Objekt nicht mehr benötigt wird. 

Aber statistisch macht er viel weniger Fehler, als ein
Programmierer (jedenfalls als ich :)).

> Aber trotzdem sollten keine Speicherlecks durch den gc
> entstehen. Und von Bugs in Java 1.4.1 bin ich bisher
> einigermaßen verschont beblieben, hab aber auch keine
> Java-Programme tagelang laufen.

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?

> 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?

> In den UNIX-Standards (UNIX98, SUS2, ...)sind nur wenige Funktionen
> als threadsafe definiert. Was die glibc macht ist was anderes. Wenn
> man darauf vertraut, sieht es schlecht mit der Portabilität aus.

Yep... bleibt dann spannend ;)

> Dann kann man race conditions studieren. :-)

Ja, das debuggt sich bestimmt ganz herrlich, wenn das Problem ca.
einmal täglich an einer beliebigen Stelle auftritt :) Wie kann
man sowas überhaupt machen? Wenn man Pech hat, reicht ja eine
Stelle, wo sich zwei Threads gegenseitig Mist reinschreiben oder
rauslesen...

> > 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?

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.



Mehr Informationen über die Mailingliste linux-l