sem_trywait.c 197 B

12345678910
  1. #include <semaphore.h>
  2. #include "pthread_impl.h"
  3. int sem_trywait(sem_t *sem)
  4. {
  5. int val = sem->__val[0];
  6. if (val>0 && a_cas(sem->__val, val, val-1)==val) return 0;
  7. errno = EAGAIN;
  8. return -1;
  9. }