title: Is there a name for this synchronization primitive?
body: <p>Suppose I have a synchronization primitive with the following features:</p>
  
  <ol>
  <li>It has a <em>Count</em> property which is initially zero.</li>
  <li>It has a <em>Wait</em> method. When invoked on an object with <em>Count</em> zero, it returns immediately.<br>
  Otherwise, it blocks and waits for the object to be signalled.</li>
  <li>It has a <em>Signal</em> method. When invoked on an object with a positive <em>Count</em>, it decrements it and unblocks the current/next invocation of <em>Wait</em>.  </li>
  <li>If <em>Signal</em> was called 5 times while <em>Wait</em> waited, not only will the current <em>Wait</em> return, but the next 4 calls to <em>Wait</em> will return immediately.</li>
  <li>It has an <em>ExpectSignal</em> (not sure about the name) method. It increments the <em>Count</em> property.</li>
  </ol>
  
  <p>Is there a standard, even if obscure, name for such an entity?</p>