Rethinking the futex API
Rethinking the futex API
Posted Jun 23, 2020 22:01 UTC (Tue) by ras (subscriber, #33059)In reply to: Rethinking the futex API by rweikusat2
Parent article: Rethinking the futex API
My point wasn't that thundering herd isn't a problem. It clearly is.
My point was that it is already solved by the current futex() API. You get to decide how many of those syscall(SYS_futex, &futex, FUTEX_WAIT)'s you wake up. It can be anywhere from 1 to all. The others just sit around, waiting for another FUTEX_WAKE.
To solve the pthread_cond_wait() case you just wake up one, so it could have been done without REQUEUE now. I'll grant you that not all that REQUEUE does, it also prevents the futex from seeing any future wakeups. But that could equally well be done from userspace using more futex's. Perhaps it's a speed optimisation (I do hope they benchmarked it), or more likely arranging or everyone to share information the kernel already had was hard so they took the easy way out.
