a method for waiting until a certain condition becomes true... When using futexes, the majority of the synchronization operations are performed in user space. A user-space program employs the futex() system call only when it is likely that the program has to block for a longer time until the condition becomes true.
как я понимаю, futex ф-ция в glibc не сразу вызывает syscall, а сначала пытается синкануться в user-space, это правда? т.е. она сначала пытается сделать атомарную CAS об uint32_t переменную?
посмотри в исходниках напрямую
На сколько я помню дизасм, там действительно в начале идет быстрый пусть с одним атомиком. Но в сырцах я не копался.
Обсуждают сегодня