Как проверить состояние семафора

Я хочу проверить состояние семафора , чтобы увидеть, если он сигнализируется или нет (так, если сигнализируется, Я могу отпустить его). Как я могу это сделать?

Редактировать1:

У меня есть два потока, один ждать на семафоре, а другой должен освободить семафор . Проблема в том, что вторая нить может вызывать выброс () несколько раз, когда первый поток не ждет. Таким образом, второй поток должен обнаружить, что если он вызывает вызов RELEAL () , он генерирует какую-либо ошибку или нет (она генерирует ошибку, если вы попытаетесь выпустить семафор, если никто не ждал его). Как я могу это сделать? Я знаю, что могу использовать флаг, чтобы сделать это, но это уродливо. Есть ли лучший способ?

17
задан sll 7 September 2011 в 08:57
поделиться