Я создал 6 сокетов и одновременно слушаю их все, используя select. Я хочу узнать, сколько времени процессору требуется переключение с 1 сокета на другой. Кто-нибудь знает; если нет, может ли кто-нибудь помочь мне, пожалуйста, о том, как вычислить эту проблему!
Сокет select() Переключение времени?
Ответы (1)
Я думаю, вы, возможно, неправильно поняли, что на самом деле делает вызов select, справочная страница для select говорит следующее:
Наблюдаются три независимых набора файловых дескрипторов. Те, что перечислены в readfds, будут отслеживаться, чтобы увидеть, станут ли символы доступными для чтения (точнее, чтобы увидеть, не блокируется ли чтение; в частности, файловый дескриптор также готов в конце файла), те, что в writefds будут отслеживаться, чтобы убедиться, что запись не будет заблокирована, а те, что находятся в excludefds, будут отслеживаться на наличие исключений. При выходе наборы изменяются на месте, чтобы указать, какие файловые дескрипторы фактически изменили статус. Каждый из трех наборов дескрипторов файлов может быть указан как NULL, если дескрипторы файлов не должны отслеживаться для соответствующего класса событий.
Поэтому, когда ваш вызов select возвращает то, что он скажет вам, какой из файловых дескрипторов (если таковой имеется) готов к чтению (в вашем случае). Дальше уже вам решать, что читать и как читать.
Если вы можете, я бы порекомендовал найти копию Unix Network Programming (Stevens, Fenner, Rudoff). Это даст вам всю справочную информацию и пример кода C, который вам когда-либо понадобится в сетевом программировании.
Или посмотрите учебник здесь
select
не переключается между сокетами, она проверяет, какой сокет получил активность, и с вашей точки зрения можно сказать, что ядро проверяет все сокеты одновременно. - person Some programmer dude   schedule 08.01.2014select
может вернуться с несколькими активными сокетами в наборах. Таким образом, как1_socket
, так и2_socket
(согласно вашему примеру) могут быть, например. набор для чтения, когдаselect
возвращается. Просто нет переключения. - person Some programmer dude   schedule 08.01.2014