1. 26 9月, 2011 2 次提交
  2. 25 9月, 2011 2 次提交
  3. 24 9月, 2011 1 次提交
    • R
      fix ABA race in cond vars, improve them overall · 97c5b5a8
      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.
      97c5b5a8
  4. 23 9月, 2011 1 次提交
  5. 08 8月, 2011 1 次提交
  6. 18 2月, 2011 1 次提交
    • R
      reorganize pthread data structures and move the definitions to alltypes.h · e8827563
      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.
      e8827563
  7. 12 2月, 2011 1 次提交