![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
Leksey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 12.12.2004 Репутация: нет Всего: 1 |
Вот есть проблема: Многопользовательский сервер на C#.
Если бы писал на C++ использовал бы пул потоков и порты завершения для того чтобы не создавать на каждого клиента по потоку. Как эту проблему решить на С#? PS Вариант импортирования функций не предлагать. |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 3 Всего: 61 |
Асинхронный ввод/вывод на С# уже есть. Он реализуется с помощью методов Begin..., End.... Например, у сокета есть методы BeginReceive, EndReceive. Пул потоков тоже присутствует в виде класса ThreadPool. Для чего сервер-то? Это сообщение отредактировал(а) arilou - 18.4.2006, 10:38 |
|||
|
||||
Leksey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 12.12.2004 Репутация: нет Всего: 1 |
Я про BeginReceive..., EndReceive знаю.
Сервер для компьютерной игры. Решил делать так один поток на 5 клиентов с асинхронными сокетами на сервере и один дополнительный поток на клиенте. |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 3 Всего: 61 |
FYI, порты завершения -> в .NET это называется асинхронный ввод вывод -> BeginReceive, EndReceive. |
|||
|
||||
vinegr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 6.2.2006 Репутация: 1 Всего: 3 |
Коллеги, а можно поподробнее ?
у меня есть сервер на асинхронных сокетах, и я считал, что BeginReceive указывает call-back, который запускается по событию прихода данных, а выделение нити, в контексте которой выполняется call-back - дело системное и абсолютно непрозрачное. Логирование показывает, что нити повторно используются, количество работающих нитей зависит от нагрузки на сервер - но как бы явно управлять этой механикой ? (меня заинтриговала фраза
как при использовании асинхронных сокетов ты будешь задавать, что вот эти 5 клиентов (сокетов) надо обслуживать вот этой нитью, а вот эти - другой нитью ? |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 3 Всего: 61 |
||||
|
||||
Leksey |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 332 Регистрация: 12.12.2004 Репутация: нет Всего: 1 |
Это точно возможно на C++ и WinAPi.
А вот в .Net не уверен.... |
|||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 3 Всего: 61 |
||||
|
||||
Exception |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 4525 Регистрация: 26.12.2004 Репутация: 2 Всего: 186 |
||||
|
||||
arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 3 Всего: 61 |
||||
|
||||
vinegr |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 6.2.2006 Репутация: 1 Всего: 3 |
штука не в том, чтобы поймать событие от overlapped I/O operation штука в том, что очередь событий и механизм порождения нитей-обработчиков находятся где-то в недрах (я полагал, что в недрах исполняющей системы дотНета, но м.б. и в недрах WinAPi) - вот про это где бы почитать ? |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |