| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Распределённые приложения и сеть > Производительный сервер на C# |
| Автор: Leksey 17.4.2006, 22:09 |
| Вот есть проблема: Многопользовательский сервер на C#. Если бы писал на C++ использовал бы пул потоков и порты завершения для того чтобы не создавать на каждого клиента по потоку. Как эту проблему решить на С#? PS Вариант импортирования функций не предлагать. |
| Автор: Leksey 18.4.2006, 13:20 |
| Я про BeginReceive..., EndReceive знаю. Сервер для компьютерной игры. Решил делать так один поток на 5 клиентов с асинхронными сокетами на сервере и один дополнительный поток на клиенте. |
| Автор: arilou 18.4.2006, 13:39 |
FYI, порты завершения -> в .NET это называется асинхронный ввод вывод -> BeginReceive, EndReceive. |
| Автор: vinegr 17.5.2006, 10:07 | ||
| Коллеги, а можно поподробнее ? у меня есть сервер на асинхронных сокетах, и я считал, что BeginReceive указывает call-back, который запускается по событию прихода данных, а выделение нити, в контексте которой выполняется call-back - дело системное и абсолютно непрозрачное. Логирование показывает, что нити повторно используются, количество работающих нитей зависит от нагрузки на сервер - но как бы явно управлять этой механикой ? (меня заинтриговала фраза
как при использовании асинхронных сокетов ты будешь задавать, что вот эти 5 клиентов (сокетов) надо обслуживать вот этой нитью, а вот эти - другой нитью ? |
| Автор: arilou 17.5.2006, 11:59 | ||
Не уверен, что это возможно, т.к. overlapped I/O - это фича ОС. Хотя я не знаю, надо копать. |
| Автор: Leksey 17.5.2006, 19:42 |
| Это точно возможно на C++ и WinAPi. А вот в .Net не уверен.... |
| Автор: arilou 18.5.2006, 12:14 |
Ага, тока речь идет о дотнете |
| Автор: Exception 18.5.2006, 18:27 |
Кто-то отменил DllImport |
| Автор: arilou 18.5.2006, 18:54 |
Ну ну. |
| Автор: vinegr 26.5.2006, 17:15 |
штука не в том, чтобы поймать событие от overlapped I/O operation штука в том, что очередь событий и механизм порождения нитей-обработчиков находятся где-то в недрах (я полагал, что в недрах исполняющей системы дотНета, но м.б. и в недрах WinAPi) - вот про это где бы почитать ? |