на главную | войти | регистрация | DMCA | контакты | справка | donate |      

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я


моя полка | жанры | рекомендуем | рейтинг книг | рейтинг авторов | впечатления | новое | форум | сборники | читалки | авторам | добавить



Листинг 10.34. Функция sem_trywait

//my_pxsem_nmap/sem_trywait.с

1  #include "unpipc.h"

2  #include "semaphore.h"


3  int

4  mysem_trywait(mysem_t *sem)

5  {

6   int n, rc;

7   if (sem->sem_magic != SEM_MAGIC) {

8    errno = EINVAL;

9    return(-1);

10  }

11  if ((n = pthread_mutex_lock(&sem->sem_mutex)) != 0) {

12   errno = n;

13   return(-1);

14  }

15  if (sem->sem_count > 0) {

16   sem->sem_count--;

17   rc = 0;

18  } else {

19   rc = –1;

20   errno = EAGAIN;

21  }

22  pthread_mutex_unlock(&sem->sem_mutex);

23  return(rc);

24 }


Функция sem_trywait | UNIX: взаимодействие процессов | Функция sem_getvalue