Сервис предназначен для захвата одного ресурса семафора без перевода задачи в состояние ожидания.
Если счетчик свободных ресурсов семафора больше нуля (семафор свободен), он уменьшается на единицу. Если счетчик свободных ресурсов семафора равен нулю (семафор захвачен), сервис возвращает код TERR_TIMEOUT
. Счетчик ресурсов семафора не меняется. В любом случае задача не блокируется.
Вызов:
TN_RETVAL tn_sem_polling (TN_SEM *sem);
Разрешен вызов:
В контексте задачи
Параметры функции:
sem
Возвращаемые значения:
TERR_WRONG_PARAM
TERR_NOEXS
TERR_WCONTEXT
TERR_TIMEOUT
TERR_NO_ERR
Пример вызова:
TN_SEM sem_test; if (tn_sem_polling(&sem_test) == TERR_NO_ERR) { /* ... */ }