Не конкретный кодовый вопрос, а скорее общий вопрос кодирования. Я пытаюсь использовать семафор в рабочем проекте, чтобы ограничить число пользователей, которые могут одновременно получать доступ к определенным процессам.
Из моего понимания следующее:
$iKey = ftock($sSomeFileLocation,'sOneCharacterString'); //Generate the key
if($sem_id = sem_get($iKey)){ //1 user allowed
if(sem_acquire($sem_id)){
//Do the limited process here
sem_release($sem_id);
}
}
Проблема, которую я вижу здесь, состоит в том, что если уже есть один пользователь, имеющий ключ семафора, то следующий пользователь просто ждет, пока первый пользователь не завершит работу, а не просто выйдет из строя. Кто-нибудь знает способ, которым, если число max_acquire было достигнуто, sem_acquire (или подобное) просто вернет false?
Спасибо