<assertions>
  <assertion id="1" tag="ref:XSH6:32349:32353">
  The function
    int pthread_cond_destroy(pthread_cond_t *cond);
  shall destroy the given condition variable specified by cond;
  the object becomes, in effect, uninitialized. An implementation may cause pthread_cond_destroy()
  to set the object referenced by cond to an invalid value. A destroyed condition variable object can
  be reinitialized using pthread_cond_init(); the results of otherwise referencing the object after it
  has been destroyed are undefined.
  </assertion>

  <assertion id="2" tag="ref:XSH6:32354:32356">
  It shall be safe to destroy an initialized condition variable upon which no threads are currently
  blocked. Attempting to destroy a condition variable upon which other threads are currently
  blocked results in undefined behavior.
  </assertion>

  <assertion id="3" tag="ref:XSH6:32370:32370">
  If successful, the pthread_cond_destroy() function shall return zero;
  </assertion>

  <assertion id="4" tag="ref:XSH6:32376:32380">
  The pthread_cond_destroy() function may fail if:
    [EBUSY] The implementation has detected an attempt to destroy the object referenced
            by cond while it is referenced (for example, while being used in a
            pthread_cond_wait() or pthread_cond_timedwait( )) by another thread.
    [EINVAL] The value specified by cond is invalid.
  The function shall not return an error code of [EINTR].
  </assertion>
</assertions>
