2015-05-21 2 views
1

Я использую MinGW:POSIX проблема с MinGW (sem_timedwait)

GNU Make 4,1

Построенный для x86_64-W64-mingw32

Я заметил, что sem_timedwait не является (возвращается -1). У меня нет проблем с sem_wait или sem_signal.

Пример кода:

struct timespec timeSpec; 
int rc = 0; 
timeSpec.tv_sec = 1000; 
timeSpec.tv_nsec = 0; 
rc = sem_timedwait(pSemId,&timeSpec); 

CC = x86_64-w64-mingw32-НКУ

+0

И что такое 'errno'? – Dummy00001

+0

printf («% s», strerror (errno)) -> «Неизвестная ошибка» «Неизвестная ошибка» является результатом errno – Sharon

+0

Фактическое числовое значение 'errno' было бы более полезным, поскольку' strerror () 'не гарантированно содержит описание для всех возможных. И некоторые описания прямо сбивают с толку. Вооружившись «errno», вы можете проверить заголовки Mingw, чтобы узнать, какая ошибка соответствует коду. Это должно помочь сузить поиск проблемы. – Dummy00001

ответ

1

нормально, время должно быть относительным и не absolote. tm = время (NULL); timeSpec.tv_sec = tm + 10; timeSpec.tv_nsec = 0; rc = sem_timedwait (pSemId, & timeSpec);

Решить проблему.

+0

Рад, что вы решили проблему! Довольно отсталый, чтобы использовать абсолютное время, когда каждая другая подобная функция использует относительное время. – Dummy00001

Смежные вопросы