Noel Grandin wrote: > > SRW locks are spin-locks. Since they are only pointer-sized, > > ReleaseSRWLockExclusive cannot notify other threads — unlike > > CRITICAL_SECTION. > > Therefore, AcquireSRWLockExclusive must busy-loop when the lock is already > > held. > > > > No, they only spin briefly, before calling into the OS to sleep - see the > article about their internals here: > > https://learn.microsoft.com/en-us/archive/msdn-magazine/2012/november/windows-with-c-the-evolution-of-synchronization-in-windows-and-c#slim-readerwriter-lock
Still: Does ReleaseSRWLockExclusive notify other threads? > Alternatively, Windows already has an API for init-once i.e. > > https://learn.microsoft.com/en-us/windows/win32/sync/one-time-initialization Functionally, the INIT_ONCE looks interesting. But, like Takashi Yano mentioned, how would you make it fit into a pthread_once_t that is defined as struct { pthread_mutex_t mutex; int state; } ? Bruno -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple