| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > Реализация сетевого взаимодействия |
| Автор: Ares4322 27.4.2010, 13:19 |
| Доброго времени суток! Есть такая POSIX-библиотека aio. В ней - функции асинхронного ввода-вывода. Возможно ли заменить модель многопоточного синхронного блокируемого сетевого взаимодействия по TCP (когда на каждое соединение создается отдельный поток, в котором происходит блокировка на функции приема) на однопоточное асинхронное(когда на каждый новый сокет вешается callback-функция, которая вызывается при появлении данных )? И будет ли это эффективно? |
| Автор: djamshud 27.4.2010, 13:33 |
| Не знаю. как с callbac-ами, но вообще это делают с помощью poll/select. |
| Автор: Ares4322 27.4.2010, 13:48 |
| Вы меня не поняли. Poll / select - это неблокируемый синхронный ввод-вывод. То есть, чтобы получить данные мы должны вызвать функцию приема, а в асинхронном функция сама, так сказать нас вызывает. То есть при появлении данных останавливается основной поток выполнения программы, отрабатывает callback-функция, а потом программа продолжает работать дальше. |
| Автор: MAKCim 27.4.2010, 22:37 |
| Ares4322, в Linux для сокетов pure асинхронная модель не поддерживается без патчинга ядра насчет обработчиков...обратите внимание на буферизируемый ввод-вывод в libevent хотя это не асинхронная библиотека |