• Обработка потоков на сервере мессенджера?

    @res2001
    Developer, ex-admin
    Можно и без потоков реализовать, рассмотрите асинхронный подход к обработке соединений. Как в nginx.
    Будет интересно!
    Ответ написан
    Комментировать
  • Обработка потоков на сервере мессенджера?

    @nirvimel
    Количество потоков не равно количеству открытых сокетов. Расходовать на каждое подключение отдельный поток ни в коем случае нельзя. Но синхронно закрывать сокет после обработки подключения совсем не обязательно. Сокет - просто значение ячейки массива (или карты) будет взято и использовано когда понадобится в любом потоке (работа с конкретным сокетом, конечно, должна быть обернута в соответствующий синхроблок). Единственно, о чем не следует забывать это - KeepAlive пинги (отдельный пул потоков и таймера под них, например), которые обеспечивают сразу две задачи: 1) помогают удержать неактивное соединение (умные роутеры любят закрывать "мертвые" соединения, и клиент, в зависимости от реализации, может делать то же). 2) очищают список сокетов от реально мертвых.
    Ответ написан
    2 комментария