Witam!

Ostatnio ucząc się programowania gniazd zastanowiłem się głębiej nad działaniem serwera, powiedzmy gadu-gadu. Zastanawia mnie jak przechowywane są informacje takie jak status czy opis i jak przebiega wymiana informacji, tzn. jak serwer jest w stanie obsłużyć tak wielką ilość użytkowników korzystających z aplikacji w tym samym czasie(powiadomienie każdego o zdarzeniach np. zmiana statusu osoby z listy kontaktów - wielowątkowość?). Domyślam się, że dane tj. hasło czy informacje dodatkowe katalogu publicznego przechowywane są w bazie SQL lecz informacje o statusie najprawdopodobniej przechowywane są w pamięci ram.

Pytam, gdyż planuję napisać aplikację podobnego typu(nie, to nie będzie kolejny komunikator) i chciałbym zapoznać się z ogólnymi zasadami pisania wydajnych serwerów nie tylko z zastosowaniem do programów ale także do gier sieciowych.

Pozdrawiam

PS. Aplikację chcę stworzyć w c++ dlatego wybrałem ten dział.