Szukałem po googlach, jakoś nie mogłem znaleźć
powiedzmy że mamy taki kod
#include <windows.h>
#include <iostream>
using namespace std;
DWORD WINAPI FunkcjaWatku(PVOID pvParam)
{
for (int i = 100 ; i < 110 ; i++){
Sleep(1000);
cout << i << endl;
}
return 0;
}
int main()
{
int x = 6;
DWORD IdWatku;
CreateThread(NULL, 0, FunkcjaWatku, (PVOID)x, 0, &IdWatku);
for (int i = 0 ; i < 10 ; i++){
Sleep(500);
cout << i << endl;
}
return 0;
}
więc main skończy się wcześniej niż FunkcjaWatku. Co w takim wypadku się stanie? Wątek będzie dalej działał mimo że działanie programu zostało zakończone? A może przerwie działanie? Próbowałem zobaczyć ewentualne zmiany na wykresie wydajności w menedżerze, ale jakoś nie jestem pewien co tam się dzieje.
Jak przed czymś takim się zabezpieczyć?
Czasami też wątki uruchamiają się w jednoczesnym momencie a czasami nie (wyświetla np 1027 a później robi dwa razy '\n') od czego to zależy?
I ogólnie, polecacie jakąś książkę/artykuł do poczytania na ten temat?