Programm stürzt bei Exceptions in Threads ab
-
WIeso stürzt dieses Programm ab ("... funktioniert nicht mehr")?
#include <iostream> #include <windows.h> DWORD WINAPI thrFunc(void *p) { try { throw 1; } catch (...) { } } int main() { DWORD foo; for (unsigned int i = 0; i < 100000; i++) { CreateThread(NULL, 0, thrFunc, NULL, 0, &foo); } std::cin.get(); }
-
was erwartest du den von diesem 'Programm'?
-
Benutze einen Debugger, der sagt dir genau was schief gegangen ist.
Jemand meinte mal für threads werden pauschal 1MB Stack reserviert, dir geht also sehr schnell der Speicher aus.
-
nwp2 schrieb:
Jemand meinte mal für threads werden pauschal 1MB Stack reserviert, dir geht also sehr schnell der Speicher aus.
In diesem Fall würde der Thread einfach nicht erstellt. Ein weiteres Problem ist, das er die Handles nach Beendigung der threads nicht schließt. Das Programm funktioniert ansonsten - dauert halt ewig und drei Tage bis 100000 threads erstellt werde.
-
Interessanterweise funktioniert das Programm tatsächlich.
Und es braucht nichtmal ewig und 3 Tage, sondern ist innerhalb von Sekunden fertig.
-
nwp2 schrieb:
Interessanterweise funktioniert das Programm tatsächlich.
Und es braucht nichtmal ewig und 3 Tage, sondern ist innerhalb von Sekunden fertig.Ja, weil CreateThread einfach irgendwann nen Fehler zurückgibt. Der Returnwert wird ja nirgends abgefragt.
-
Hi
Du hasst einfach keine Ahnung !!!! Schreib lieber wider java programme, da kannst du nicht viel falsch machen

Dieser Post von dier ist einfach zum lachen.
Lowbyte
-
loooooooool