"Jens-Uwe Mager" <[EMAIL PROTECTED]> wrote:
>> Can't really tell from that. Anyone else know what threading library
>> Darwin uses?
>
> Darwin is a BSD kernel on top of MACH. The current implementation maps
> POSIX threads to MACH kernel threads in a one to one implementation. The
> implementation is not without flaws either, as for example there are
> problems with cancellation, signal handling (I believe) and process
> shared mutexes.
It seems to work all-right on my development box, I loaded Apache 2.0.32
with some 200/300 clients, and didn't observe any weirdness, but hey, I
wouldn't bet my salary on that :)
>>> On Darwin semget and semctl are there, but there is no SEM_UNDO, the
>>> pthread_mutexattr_setpshared (of course) is not there, but I'm wondering if
>>> there's another way to handle things without using files, which just is a
>>> kick in the **** :)
>>
>> I dunno, don't have a darwin box. :)
>
> There is no real cross process locking that works without a system call
> in the non-congested case in Darwin. I did resort to using the spin
> locks from the historic MACH cthreads implementation which is still used
> in a lot of code from the standard libraries (both cthreads and pthreads
> map to the underlying MACH kernel threads one to one). Unfortunately
> they do not ship their cthread.h file they use to build the system, but
> I grabbed it from the Darwin CVS.
Wicked... Even less supported than sem_... :( One day when they'll be able
to send me my password for the CVS thinghie, I'll might be able to give it a
look :(
Pier