Асинхронные сокеты
Модератор: Модераторы разделов
-
n1tr0gen
- Сообщения: 149
Асинхронные сокеты
Под windows можно использовать асинхронные сокеты. В этом случае при появлении данных для чтения например, вызывается указанная программистом функция обратного вызова, что впринципе достаточно удобно. В linux похожую функциональность конечно можно получить используя неблокирующие сокеты + библиотеку qt (QSocketNotifier). Но ради этого держать в зависимостях qt как минимум очень глупо. Все остальные варианты, которые я знаю, сводятся к постоянному опросу состояния сокета в неблокирующем режиме на предмет поступивших данных. Подскажите, как поступают в данном случае? Моя программа должна выполнять свою работу и прерываться на обработку только если есть поступившие данные.
-
elide
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: Асинхронные сокеты
ну запусти отдельный поток, который будет мониторить сокет, переодически засыпая, а если обнаружит данные, то дернет callback или пошлет сообщение. в чем проблема?
слава роботам!
-
n1tr0gen
- Сообщения: 149
Re: Асинхронные сокеты
А каким способом лучше создавать поток? При использовании fork например разделяемой получается только "секция" кода, а данные у каждого процесса свои. Использовать pthread_create?
-
elide
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: Асинхронные сокеты
можно использовать pthreads. можно nptl. а можно почитать man clone
нет способа "лучше", есть способ, который работает в твоем случае (:
нет способа "лучше", есть способ, который работает в твоем случае (:
слава роботам!
-
d_n_k
- Сообщения: 636
- ОС: Gentoo GNU/Linux