1) Вы НИКОГДА не захотите, чтобы работало столько потоков - даже если бы вы могли заставить их работать на вашем компьютере (чего вы не можете - каждый поток имеет связанный с ним стек, который занимает реальную память и, как только вы запускаете больше и все больше и больше у вас кончатся физические ресурсы в вашем ящике и вы увидите, как он взрывается).
2) Вы захотите изучить пул потоков - используя меньшее количество потоков для выполнения большего объема работы - как правило, читая из очереди работы, которую вы пытаетесь пройти как можно быстрее.
3) Вы захотите изучить порты завершения io - средство обратного вызова, когда io (например, чтение с диска или сетевой io) ждет, когда вы предпримете какие-либо действия, - подумайте о потоке (или пуле потоки), предназначенные для получения уведомлений io, а затем помещая действие, которое нужно выполнить для этого io, в очередь, а затем в другой пул потоков, которые заботятся о реальном обмене сообщениями / ведении журнала / и т.д.
4) Что происходит, когда вы масштабируете за пределы одной машины? Что вы надеетесь сделать, если вы успешны, верно? :-) Обычно люди выделяют для беседы набор из N машин - затем они хэшируют на основе идентификатора пользователя (например, GUID, представляющий пользователя) или UserID / bigint в зависимости от того, что соответствует некоторому внутреннему токену аутентификации, который является непротиворечивым от входа в систему до входа в систему), что позволяет им детерминистически направлять информацию о состоянии / состоянии пользователя на конкретную машину в этом наборе из N блоков, предназначенных для обмена сообщениями. Таким образом, если пользователю, который хэширует сервер N [2], необходимо проверить, вошли ли их друзья, легко узнать для каждого из своих друзей, на какой именно машине должен находиться статус их друга, потому что серверная часть постоянно хэширует этих друзей в IM. машина, которая соответствует каждому хешу идентификатора пользователя. (т. е. вы просто знаете из ИД пользователя, какой сервер в ферме должен обрабатывать состояние IM для этого пользователя.
Только не думай, что ты раскручиваешь кучу ниток, и это спасет день. Это небрежно и работает только в очень небольших количествах.