On 2008-07-14 12:20:19 -0700, Christiaan Hofman <[EMAIL PROTECTED]> said:

> BTW, I forgot to ask. I don't understand this in the async DO server:
> 
>          SInt32 result = CFRunLoopRunInMode(kCFRunLoopDefaultMode,
> 0.1, TRUE);
>          if (kCFRunLoopRunFinished == result || kCFRunLoopRunStopped
> == result)
>              OSAtomicCompareAndSwap32Barrier(0, 1, &serverFlags-
>  >shouldKeepRunning);
>          else
>          OSMemoryBarrier();
> 
> How could shouldKeepRunning ever become 0 in this (except for the
> server being canceled)? Why doesn't this work:
> 
>          [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode
> untilDate:[NSDate dateWithTimeIntervalSinceDate:0.1]];
>          OSMemoryBarrier();

This would work as well, but it's not checking a return value.  
Checking the result allows seeing if the calling thread's runloop 
(typically main thread) has stopped and kills the server.  I think the 
idea was to avoid blocking in case the app could be quitting while this 
thing was setting up, or someone could cancel it immediately.

> Also, is the NSZoneCAlloc for the flags necessary? Shouldn't calloc be
> implied by the aligned? We don't do this with extra aligned flags in
> subclasses.

I used calloc here it explicitly zeroes memory; the alignment is 
unrelated.  Malloc could be used as well (or convert it to Obj-C++ and 
use new :).

Incidentally, all of the alignment attributes can be removed unless 
there's padding (like a uint8_t) in a struct that would push one of the 
flags to a non-word boundary.  The current usage is based on my misread 
of the docs.

-- 
adam



-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Bibdesk-develop mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-develop

Reply via email to