Jarosław
Rybski
Programista
C/C++/Python
Temat: Zaczekać na zakończenie wątków
Witam,Mam problem z jednym zadaniem - początkowo wszystko wydawało się proste i logiczne ale jednak moja analiza poszła dalej i powstał problem.
Serwer - wykorzystuje protokół TCP/IP coś na styl ala gadu-gadu.
Jest pętla
while(1)
{
accept(...) // akceptacja na przyłączenie klienta
pthread_create fun_do_obsługi_klienta()
lub _beginthread
}
WaitForMultipleObject(ile_watkow ...)
cout << "koniec programu"
To właśnie jest problem - w jaki sposób wykryć że wszystkie wątki uległy zakończeniu? Myślałem że WaitForMultipleObject będzie odpowiednia ale raczej nic z tego. Wątków mogę utworzyć dowolną ilość - czyli np aktualnie jest podłączonych 5 klientów i każdy ma swój wątek a za chwilę będzie ich 55 - czyli dynamicznie zmieniająca się ilość wątków.
Każdy klient który się podłączy do serwera może być zalogowany zarówno na 10 sekund jak i na godzinę - wylogowanie się klienta jest równoznaczne z zakończeniem się wątku. Oczywiście pętla jest tak zbudowana aby się kręciła bez końca jednak chciałbym na czas testów zobaczyć jak to wszystko będzie ze sobą współgrało i co pokaże Valgrind.
Kolejnym elementem który mnie zastanawia to jak powinien być zaimplementowany serwer mogący obsłużyć jednocześnie 10tys klientów. W WinXP proces utworzył ponad 600 wątków do obsługi klientów jednak nie mogę powiedzieć żeby ten program płynnie pracował a system to praktycznie zadyszki dostał.
Pozdrawiam.