using select() without blocking the runloop


Gerriet M. Denkmann
 

I need to do select() with a rather large timeout value (several minutes).

So in order not to block the runLoop / mainThread I tried:

dispatch_queue_t myQueue = dispatch_get_global_queue( QOS_CLASS_BACKGROUND, 0 );
dispatch_async( myQueue, ^void(void)
{
selectResult = select(one_highest_fd, p_read_fds, p_write_fds, p_except_fds, ptv);
selectErrno = errno;
}
);

But I get EINVAL = Invalid argument.
Seems like file descriptors are thread specific.

How to do an asynchronous select() ?

Gerriet.

Join cocoa@apple-dev.groups.io to automatically receive all group messages.