The other thing I'm confused about is that in the past ioRelinquishProcessorForMicroseconds()
where we would calculate the pending wakeup time based on my thoughts of a few years ago then we would have said aioPoll(realTimeToWait)....
and the aioPoll() logic would do it's thing for the supposed set of micro seconds.
However now I see that this has changed to:
if (!aioPoll(0)) { struct timespec rqtp= { 0, realTimeToWait * 1000*1000 }; struct timespec rmtp; while ((nanosleep(&rqtp, &rmtp) < 0) && (errno == EINTR)) rqtp= rmtp; }
so why the change not to have the select() do the sleep?
what are the conditions that would cause aioPoll() to return 0, thus invoking this nanosleep and if the nanosleep is invoked, would 16 ms pass before servicing a socket? if realTimeToWait is 16ms?
On 17-Apr-06, at 2:19 PM, Andreas Raab wrote:
John M McIntosh wrote:
ioProcessEvents() is a null call on os-x. you have some other magic you are expecting it to do?
How do you deal with sockets? I thought you were using the Unix socket code which relies on aio* and which is commonly called in ioProcessEvents. If not there, where *do* you call it? ;-)
Cheers,
- Andreas
-- ======================================================================== === John M. McIntosh johnmci@smalltalkconsulting.com 1-800-477-2659 Corporate Smalltalk Consulting Ltd. http://www.smalltalkconsulting.com ======================================================================== ===