Witam, muszę napisać serwer na Windowsa i nie jestem pewien jakie rozwiązanie wykorzystać - czy select, czy może każde połączenie osobny wątek?

Dokładniej o serwerze - serwer przechowuje jedynie listę podłączonych klientów. Klient wysyła pakiety o tym kiedy dołącza i kiedy chce odejść oraz serwer regularnie wysyła pakiet sprwadzający czy klient dalej jest podłączony do serwera oraz regularnie wysyła listę wszystkich klientów do każdego osobnego klienta.

I teraz moje pytanie, jak rozwiazać ten problem? Czy używać dla każdego klienta osobnego wątku? (Klientów może być nawet ponad 50)
Czy może lepiej skorzystać z na przykład select i reagować na dane komunikaty zależnie czy socket będzie chciał odbierać dane, akceptować połączenie itd?