Not pre-empting threads in critical sections


#1

Would it be a good idea for threads to indicate when they enter/exit critical sections, allowing the kernel to decide not to pre-empt them at this time?

I’m envisioning speed ups in concurrent algorithms that use locks…


#2

Doing this would require doing a syscall which would likely take more time than you could save.


#3

What if it was a library that is inlined? When the thread is created, a syscall registers an address. The functions to “signal” entering/exiting a critical section simply write to the registered address.

Alternatively, a byte could be reserved in every thread local memory for this purpose. This would eliminate the syscall and the address lookup.


#4

Probably the best way would be to go ahead and implement it on a fork and benchmark it with/without. Then, you’ll have data that people can evaluate to see if doing a PR would make sense. Working code always trumps ideas.