Простой тайм-аут для CFWriteStreamWrite / CFReadStreamWriter? - PullRequest
3 голосов
/ 14 января 2011

Работать на CFStreamCreatePairWithSocketToHost всегда удобно:

CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault,
        (CFStringRef) hostnameOrIp,
        aPort,
        &readStream,
        &writeStream);

, поскольку он сразу же доставит вам товар (труба r и w). К сожалению CFReadStreamRead и CFWriteStreamRead блок. Есть ли чистый способ установить тайм-аут на это (например, с помощью streamOption)? Они работают в потоке - и поскольку их довольно много параллельно - хотели бы избежать циклов выполнения / сигналов - поскольку любые другие ожидающие чтения / записи не должны прерываться).

Спасибо

Dw.

1 Ответ

1 голос
/ 27 февраля 2011

Вы можете использовать CFReadStreamHasBytesAvailable, чтобы проверить, доступно ли что-то. Если да, CFReadStreamRead не будет блокироваться. Или вы можете установить клиента (CFReadStreamSetClient) и прослушивать уведомления (kCFStreamEventHasBytesAvailable в вашем случае).

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