как определить состояние мьютекса - PullRequest
1 голос
/ 21 марта 2011

Мне интересно, возможно ли реализовать в Linux следующую логику и использовать библиотеку потоков POSIX.

given a mutex 
   if (I can get the mutex) {
     lock the mutex
       call fun A
     unlcok the mutex
   }
   else {
      call fun B
   }

Я новичок в программировании потоков под Linux, поэтому просто используйте псевдокод, чтобы показать логику фрагмента кода, который я ищу.

Ответы [ 2 ]

5 голосов
/ 21 марта 2011

Вы ищете pthread_mutex_trylock

1 голос
/ 21 марта 2011

С типичной блокировкой мьютекса поток будет спать до тех пор, пока не получит мьютекс, а когда он это сделает, он заблокирует все остальные потоки, пока не разблокирует мьютекс. pthread_mutex_trylock - это то, что вам нужно.

if(pthread_mutex_trylock())
{
mutex_unlock()
}
else
{

}

синтаксис неправильный ... не уверен, что возвращаемое значение trylock является так, посмотрите их на man-странице или в Google.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...