Re:No nuances, just buggy code (was: related to Spinlock imp...
by YZF on Sunday January 05, 2020 @02:03PM
(#21963159)
Do you have a reference for this? AFAIK the win32 critical section (like any modern mutex implementation) first uses atomic instructions to check if anyone is already in the critical section so it's really fast if no one is, and otherwise falls back to the OS synchronization objects.
[ Parent
| on HN ]
Re:No nuances, just buggy code (was: related to Spinlock imp...
by gmueckl on Sunday January 05, 2020 @02:54PM
(#21963578)
The information is right there in the documentation:
https://docs.microsoft.com/en-us/windows/win32/sync/critical...
The paragraph about InitializeCriticalSectionAndSpinCount and SetCriticalSectionSpinCount describe the behavior. IIRC, the default spin count used to be pretty high (1000 loops or so). Not sure if that was changed.
Re:No nuances, just buggy code (was: related to Spinlock imp...
by YZF on Sunday January 05, 2020 @08:19PM
(#21965634)
Interesting. There's also that anecdote about the heap manager using a spin count of 4000. I wasn't aware this happened by default (I didn't see any mention of this in InitializeCriticalSection). I guess it's all down to the probability of contention vs. the amount of time the mutex is held.
Re:No nuances, just buggy code (was: related to Spinlock imp...
by pizlonator on Sunday January 05, 2020 @02:10PM
(#21963206)
Your description and their description are not mutually exclusive.