- 26 9月, 2011 2 次提交
-
-
由 Rich Felker 提交于
using swap has a race condition: the waiters must be added to the mutex waiter count *before* they are taken off the cond var waiter count, or wake events can be lost.
-
由 Rich Felker 提交于
-
- 25 9月, 2011 2 次提交
-
-
由 Rich Felker 提交于
somehow i forgot that normal-type mutexes don't store the owner tid.
-
由 Rich Felker 提交于
this avoids the "stampede effect" where pthread_cond_broadcast would result in all waiters waking up simultaneously, only to immediately contend for the mutex and go back to sleep.
-
- 24 9月, 2011 1 次提交
-
-
由 Rich Felker 提交于
previously, a waiter could miss the 1->0 transition of block if another thread set block to 1 again after the signal function set block to 0. we now use the caller's thread id as a unique token to store in block, which no other thread will ever write there. this ensures that if block still contains the tid, no signal has occurred. spurious wakeups will of course occur whenever there is a spurious return from the futex wait and another thread has begun waiting on the cond var. this should be a rare occurrence except perhaps in the presence of interrupting signal handlers. signal/bcast operations have been improved by noting that they need not avoid inspecting the cond var's memory after changing the futex value. because the standard allows spurious wakeups, there is no way for an application to distinguish between a spurious wakeup just before another thread called signal/bcast, and the deliberate wakeup resulting from the signal/bcast call. thus the woken thread must assume that the signalling thread may still be waiting to act on the cond var, and therefore it cannot destroy/unmap the cond var.
-
- 23 9月, 2011 1 次提交
-
-
由 Rich Felker 提交于
it's amazing none of the conformance tests i've run even bothered to check whether something so basic works...
-
- 08 8月, 2011 1 次提交
-
-
由 Rich Felker 提交于
-
- 18 2月, 2011 1 次提交
-
-
由 Rich Felker 提交于
this allows sys/types.h to provide the pthread types, as required by POSIX. this design also facilitates forcing ABI-compatible sizes in the arch-specific alltypes.h, while eliminating the need for developers changing the internals of the pthread types to poke around with arch-specific headers they may not be able to test.
-
- 12 2月, 2011 1 次提交
-
-
由 Rich Felker 提交于
-