v podstate tam mam observer, kde mam zoznam objektov, a tie maju metody co vytvaraju tie anonymne trejdy (jeden objekt jedno vlakno),
takze by som to mohol vyuzit, len ako realne (spravne) previest to samotne ukoncenie tapam
Cesta, ze bys korektne ukoncil thread zvnejsku bez jeho spoluprace v podstate neexistuje, alespon pod woknama - to je vzdy akce naprasaka viz
TerminateThread.
Takze to vyzaduje nejakou spolupraci na strane vlastniho threadu, ktery muze testovat treba hodnotu
Terminated, ale jeji nastaveni predpoklada, ze mas nekde zapamatovanou referenci na ten thread, coz u
FreeOnTerminate threadu nelze, protoze po rozebehnuti threadu to uz muze byt dangling pointer...
Takze se to delava tak, ze se udela
globalni Event (ve smyslu synchronizacniho objektu OS), ktera je po celou dobu behu programu v non-signaled stavu a jejiz handle se da predat kazdemu threadu aby ji zahrnul do svych cekani pomoci
WaitForMultipleObjects a v pripade jeji signalizace sam sebe korektne ukoncil.
No a pak pri exitu/vnitrnim restartu aplikace staci tu globalni event nastavit do stavu signaled a vsechny thready by se na to mely drive ci pozdeji dobrovolne ukoncit.
Ale pak bys mel stejne cekat, jestli ti tam nejaky nezustal viset a pro tready v rezimu
FreeOnTerminate bys musel pouzit neco, jako ti posilal
Radek, abys obesel riziko vzniku dangling pointeru