Поддерживает ли OSX опрос ()? - PullRequest
0 голосов
/ 29 октября 2010

Я только что прочитал раздел о функции poll () во втором издании "Расширенное программирование Unix" Марка Рочкинда. В этом разделе автор упоминает, что poll () не поддерживается в Darwin 6.6, и я видел другие элементы в Интернете, которые предполагают, что poll () эмулируется в OSX с помощью системного вызова select (). Я хочу использовать poll () для класса, над которым я работаю специально, потому что он может обслуживать большое количество сокетов, и меня беспокоит превышение лимита числа дескрипторов файлов, которые может использовать select (). Если прочитанные мной утверждения верны, есть ли подходящая альтернатива для select () или есть способ преодолеть ограничение FD_SETSIZE?

1 Ответ

2 голосов
/ 30 октября 2010

poll (2) был представлен как layer over select (2) в 10.3 и получил собственную реализацию в 10.4.

Большинство современных систем на основе BSD реализовали poll () за последние несколько лет. Если вы получаете реальные выгоды от poll () (вместо select ()), я бы порекомендовал использовать его. Даже в системах, которые все еще эмулируют poll () через select (), в худшем случае ваша производительность будет такой же, как у select () с минимальным штрафом.

Если вы находитесь в ситуации, когда масштабируемость select () никогда не будет приемлемой, системы BSD, как правило, имеют очень настроенный kqueue (2) .

...