Draft pthread_spin_init(2) manual page

Florian Weimer fweimer@redhat.com
Wed Oct 18 09:09:00 GMT 2017


On 10/18/2017 10:10 AM, Michael Kerrisk (man-pages) wrote:

> DESCRIPTION
>         The  pthread_spin_init() function allocates any resources required
>         for the use of the spin lock referred to by lock  and  initializes
>         the  lock  to be in the unlocked state.  The pshared argument must
>         have one of the following values:

I think somewhere this should say that it is not possible to change the 
address of a spinlock after initialization (you can't memcpy it 
somewhere else and expect that it will keep working).  Other pthread 
objects have the same problem, of course.

> NOTES
>         Spin locks should be employed in conjunction with real-time sched‐
>         uling policies (SCHED_FIFO, or possibly SCHED_RR).   Use  of  spin
>         locks   with   nondeterministic   scheduling   policies   such  as
>         SCHED_OTHER probably indicates a design mistake.  The  problem  is
>         that  if  a  thread operating under such a policy is scheduled off
>         the CPU while it holds a spin lock, then other threads will  waste
>         time  spinning  on  the  lock  until  the lock holder is once more
>         rescheduled and releases the lock.

Isn't the more important concern whether there are sufficient resources 
to run all the threads that block on spinlocks?

Thanks,
Florian



More information about the Libc-alpha mailing list