Jakie będzie lepsze podejście.
Tworzę serwer TCP na który będzie podpinać się kilka tysięcy klientów. Zadaniem serwera jest broadcastowanie danych miedzy klientami.
Podejścia:
- Wątek serwera tworzy wątek zbierający dane od klienta i wrzuca je do kolejki (tworzy osobny wątek per klient). Osobny wątek zbiera z kolejki dane do rozesłania i rozsyła je po klientach w liście (synchronicznie, jeden watek per serwer). (w tym podejściu minus taki że będzie raczej potrzebny potężny procesor do ogarnięcia tylu wątków bez większych opóźnień)
- Watek serwera akceptujący połączenie i wrzucający klienta do listy. Watek zbierający dane od klientów iterując po liście synchronicznie i wrzuca je na kolejkę. Watek do rozsyłania danych do klientów iterując po liście z klientami. (ryzyko zapchania bufora tcp przez nie odbieranie przez serwer na czas)
Który lepiej, może macie jakieś inne pomysły?