Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Select на непустой сокет


Автор: Goganchic 23.4.2007, 18:04
У меня такая ситуация: стачала select прослушивает набор портов и извещает о пришедших данных. После этого данные обрабатываются, причем это обработка занимает достаточно много времени. При этом, в это время еще какие-то данные могут прийти на обрабатываемый сокет. После обработки select возобновляется. Подскажите пожалуйста, что будет, если select вызывается на сокет, который уже может читаться?
Извините, за корявый язык, если что-то непонятно - спрашивайте, я постараюсь пояснить.

Автор: MAKCim 23.4.2007, 19:05
Цитата(Goganchic @  23.4.2007,  18:04 Найти цитируемый пост)
Подскажите пожалуйста, что будет, если select вызывается на сокет, который уже может читаться?

смотря, что ты передаешь select() в качестве параметра timeout
если NULL - select() немедленно возвращает управление в твоем случае (данные есть), в остальных случаях может блокировать процесс бесконечно долго (ожидает готовности одного или более дескрипторов)
если все поля структуры timeval - нулевые - опрос дескрипторов и немедленный возврат
если поля ненулевые - возврат в случае готовности одного или нескольких дескрипторов или ожидание готовности (но не более того значения по времени, которое задано в структуре timeval)

Автор: Goganchic 23.4.2007, 20:20
Спасибо, я попробую если все получится - сразу напишу об этом smile

Автор: MoZy 9.4.2009, 20:13
видать не получилось.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)