mirror of https://github.com/mkerrisk/man-pages
futex.2: explanation of blocking
Use shorter sentences. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
parent
b80daba225
commit
8e754e12c5
18
man2/futex.2
18
man2/futex.2
|
@ -85,14 +85,18 @@ In the uncontended case,
|
|||
a thread can access or modify the lock state with atomic instructions,
|
||||
for example atomically changing it from not acquired to acquired
|
||||
using an atomic compare-and-exchange instruction.
|
||||
If a thread cannot acquire a lock because
|
||||
it is already acquired by another thread,
|
||||
it can request to block if and only the lock is still acquired by
|
||||
using the lock's flag as futex word and expecting a value that
|
||||
represents the acquired state.
|
||||
A thread maybe unable acquire a lock because
|
||||
it is already acquired by another thread.
|
||||
It then may pass the lock's flag as futex word and the value
|
||||
representing the acquired state as expected value to a
|
||||
.BR futex ()
|
||||
wait operation.
|
||||
.BR futex ()
|
||||
will block if and only if the lock is still acquired.
|
||||
When releasing the lock, a thread has to first reset the
|
||||
lock state to not acquired and then execute the futex operation that
|
||||
wakes one thread blocked on the futex word that is the lock's flag
|
||||
lock state to not acquired and then execute a
|
||||
.BR futex ()
|
||||
operation that wakes threads blocked on the lock flag used as futex word.
|
||||
(this can be be further optimized to avoid unnecessary wake-ups).
|
||||
See
|
||||
.BR futex (7)
|
||||
|
|
Loading…
Reference in New Issue