On Sat, 2003-11-22 at 12:22, Philipp Thomas wrote:
Bernhard Walle
[Sat, 22 Nov 2003 10:26:51 +0100]: Ok, dass es soviel ist habe ich nicht bedacht.
C/C++ Programme können ja die Grösse des benötigten Stacks über pthread_attr_setstacksize modifizieren (aber nicht unter PTHREAD_STACK_SIZE), wie das bei Java aussieht weiss ich nicht.
Obwohl off-topic dennoch die Frage: Wie verwaltet MS Windows dann die Threads? Bis Win-3.1 gab es keine Threads ;)
Da darfst du mich nicht fragen :) Ebenfalls keine Ahnung.
Die POSIX-API (pthreads) ist allerdings OS-unabhängig, d.h. die Stack-Problematik dürfte dort genauso existieren. Die Defaultwerte sind allerdings OS-spezifisch und unterscheiden sich zwischen einzelnen OSen ganz erheblich. Ich nehme aber an, dass Win-Java-Implementierungen an POSIX vorbei implementiert sind und irgendwelche native Threads verwenden. Aber ihr solltest Euch bewusst sein, das die bisherige pthread-Implementierung unter Linux eine der grössten Schwächen von Linux darstellte. Sie ist zwar für einfache Sachen durchaus brauchbar, doch die Grenzen habt ihr ja anscheinend gerade erlebt (Das soll mit nptl anders werden, doch ... warten wir es ab.). Ansonsten können, wie bei allen anderen Resourcen-intensiven Geschichten auch, auch noch die ulimits dazwischen funken. Darüber hinaus ist muss auch Frage nach dem Sinn von mehreren Hunderten oder gar Tausenden Threads erlaubt sein. Wenn ihr Euch nicht gerade mit massiv-parallellen Algorithmen beschäftigt und/oder über die entsprechende HW verfügt, macht das in der Regel nur wenig Sinn. Ralf