Thread Management
-
Sehr geehrte Miss GPunkt,
meines Erachtens nach, wurde nur darauf hingewisen, dass die Frage des Threadopeners bereits beantwortet worden ist.
Wenn der Herr Threadopener aber stets bemüht ist jeden Hinweis darauf gleich abzutun, endet dies doch so oft in Missmut und
Entäuschung so mancher unentgeldlicher hier registrierter helferlein.Mit freundlichen Grüßen

-
eine frage hab ich noch, wenn ich ein thread starte (MainThread) und aus dem heraus viele andere Threads Starte und dann das MainThread mit terminatethreat beende, beenden sich dann auch gleichzeitig die threads die ich aus dem MainThread heraus gestartet hab?
-
Ja.
-
Nein.
-
Ja.
-
Da bin ich mal auf die Antwort von hustbaer gespannt. Der kennt sich damit aus!
-
Wenn der Main-Thread endet, enden alle Threads.
-
lies mal hier: http://www.c-plusplus.net/forum/p1741170
Es gibt aber auch Prozesse ohnen primären Thread... bzw. der primäre Thread hat sich schon längst wieder beendet...
-
spike1993 schrieb:
ja schon klar das erstellen des threads ist ja kein problem nur das beenden per dwThreadId
Das ist klar dass das ein Problem ist. Threads beendet man ja auch nicht "per dwThreadId". Ein Thread beendet wenn die ThreadProc returned.
-
314159265358979 schrieb:
Wenn der Main-Thread endet, enden alle Threads.
Das ist eine Designfrage des Betriebssystems. Unter Windows z.B. endet ein Prozess erst wenn der letzte Thread des Prozesses endet.
-
Naja,..
so ganz stimmt diese aussage nicht. Der prozess ist unter windows beendet,
wenn der letzte mit diesem Prozess assoziierte Thread beendet ist.Du kannst ja auch einen Thread erstellen, und das letzte Handle von diesem
schließen. der Thread ist dann nicht mehr mit diesem Prozess assoziiert, läuft
aber noch!
-
dot schrieb:
314159265358979 schrieb:
Wenn der Main-Thread endet, enden alle Threads.
Das ist eine Designfrage des Betriebssystems. Unter Windows z.B. endet ein Prozess erst wenn der letzte Thread des Prozesses endet.
Nein. Unter Windows ist das genau nicht so.
-
314159265358979 schrieb:
dot schrieb:
314159265358979 schrieb:
Wenn der Main-Thread endet, enden alle Threads.
Das ist eine Designfrage des Betriebssystems. Unter Windows z.B. endet ein Prozess erst wenn der letzte Thread des Prozesses endet.
Nein. Unter Windows ist das genau nicht so.
Du hast unrecht!
http://msdn.microsoft.com/en-us/library/ms686722(v=vs.85).aspx
-
falsch schrieb:
314159265358979 schrieb:
dot schrieb:
314159265358979 schrieb:
Wenn der Main-Thread endet, enden alle Threads.
Das ist eine Designfrage des Betriebssystems. Unter Windows z.B. endet ein Prozess erst wenn der letzte Thread des Prozesses endet.
Nein. Unter Windows ist das genau nicht so.
Du hast unrecht!
http://msdn.microsoft.com/en-us/library/ms686722(v=vs.85).aspxProbiers doch aus, du wirst feststellen, dass dem so ist. Sowohl mit pthreads, als auch mit boost.
-
Ja weil die CRT ExitProcess aufruft. Das ändert aber nichts daran das deine Aussage falsch ist.
-
Welche CRT?

-
314159265358979 schrieb:
Nein. Unter Windows ist das genau nicht so.
Doch, siehe Link vom Vorposter.
zeusosc schrieb:
Du kannst ja auch einen Thread erstellen, und das letzte Handle von diesem schließen. der Thread ist dann nicht mehr mit diesem Prozess assoziiert, läuft aber noch!
Woher hast du das denn? Das kann eigentlich nur Blödsinn sein, würde das gehen so würde das bedeuten man kann Threads ohne Kontext erschaffen was a) komplett sinnlos wäre und b) zwangsweise crashen würde.
-
314159265358979 schrieb:
Welche CRT?

Hast du den Link auch nur kurz überflogen?
-
Der von "falsch" gepostete Link sollte eigentlich alles klären.
Unter Windows endet ein Prozess, wenn alle seine Threads beendet wurden.
-
Bei mir hat der Prozess immer geendet, wenn der MainThread beendet wurde. Discuss!