системный вызов сокета select () в Mac OSX занимает много времени для чтения - PullRequest
2 голосов
/ 20 августа 2010

Мы разрабатываем кроссплатформенное сетевое приложение, которое должно отправлять и получать данные по TCP. В Linux мы используем select() для ожидания отправки и получения, чтобы убедиться, что сокет готов. Однако в OSX выбор для чтения занимает абсурдное время для возврата - более 20 секунд. select() не истекает время ожидания - наше время ожидания составляет 60 секунд, и данные возвращаются, это просто смехотворно медленно. Это происходит только для чтения, а не отправки. С сетью все в порядке (опять же, у машины linux в той же сети, похоже, нет таких же проблем).

Кто-нибудь знает о каких-либо предостережениях, использующих программирование сокетов в OSX?

1 Ответ

1 голос
/ 21 августа 2010

Вы пробовали kqueue(2) на OSX и epoll(7) на Linux? Это гораздо более производительные и гибкие, хотя и зависящие от платформы, интерфейсы для обработки событий ввода-вывода. Вы также можете взглянуть на libevent, который абстрагирует все это для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...