Блокирующий многопоточный или неблокирующий однопоточный?
От: Moscower  
Дата: 21.04.04 10:30
Оценка:
Добрый день!

В Java 1.4 появился новый способ обработки множества клиентов для сервера — nio и его select. Везде указывается, что с при использовании его по идее сервер должен работать быстрее, если он работает со множеством клиентов. Но меня гложат сомнения.

Дело в том, что у меня есть задание написать сокет-сервер для онлайновых флеш-игр. То есть ожидается большое кол-во пользователей и создавать для каждого посетителя отдельный поток может быть достаточно накладно. Но в то же время каждый запрос пользователя может требовать иногда нетривиальных подсчетов, записей в БД, в файлы, в сокеты других посетителей. Соответственно, если все это будет выполнятся в одном потоке, как мне кажется, будут достаточно большие задержки в обслуживании.

Стоит ли в этом случае использовать неблокирующий сокет, или все-таки необходимо использовать многопоточный сервер с одним потоком для каждого пользователя? Какое зло меньше? Может есть возможность как-то использовать и то и то?

Посоветуйте, как правильнее всего сделать?

Заранее, спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.