[Python-Dev] POSIX thread code

Tim Peters tim.one@comcast.net
Thu, 28 Feb 2002 03:35:35 -0500


[Martin v. Loewis]
> ...
> You didn't ask google for _POSIX_SEMAPHORES, right? The first hit
> brings you to
>
> http://www.opengroup.org/onlinepubs/7908799/xsh/feature.html
>
> _POSIX_SEMAPHORES
>    Implementation supports the Semaphores option.

Good catch!  I didn't get a hit from the Open Group's SUS search box:

    http://www.opengroup.org/onlinepubs/7908799/

> A quick check shows that both Solaris 8 and glibc 2.2 do indeed define
> the symbol.

Cool.

> ...
> For glibc 2.1, semaphores have been reimplemented; they now provide
> FIFO wakeup (sorted by thread priority). Same for mutexes: the
> highest-priority oldest-waiting thread will be resumed.

My impression is that some at Zope Corp would find it hard to believe that
works.

>> 	do {
>> 		... call the right one ...
>> 	} while (status < 0 && errno == EINTR);

> Shouldn't EINTR check for KeyboardInterrupt?

Sorry, too much a can of worms for me -- the question and the possible
answers are irrelevant on my box <wink>.  Complications include that
interrupts weren't able to break out of a wait on a Python lock before (so
you'd change endcase semantics).  If you don't care about that, how would
you go about "checking for KeyboardInterrupt"?  Note thread.c's initial
comment:

/* Thread package.
   This is intended to be usable independently from Python.

That's why there are no calls to Python runtime functions in
thread_pthread.h (etc) files now; e.g., they call malloc() and free()
directly, and don't reference any PyExc_XXX symbols.  That's a lot to
overcome just to break existing code <wink>.