2015-05-21 42 views
1

我使用MinGW的:使用MinGW POSIX问题(sem_timedwait)

GNU让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-GCC

+0

什么是'errno'设置? – Dummy00001

+0

printf(“%s”,strerror(errno)) - >“未知错误” “未知错误”是errno的结果 – Sharon

+0

errno的实际数值会更有帮助,因为strerror )'不保证每一个可能的描述。有些描述完全是令人困惑的。用'errno'武装你可以检查Mingw标题来查看代码对应的错误。这应该有助于缩小您对问题的搜索范围。 – Dummy00001

回答

1

确定, 时间应该是相和不absolote。 tm = time(NULL); timeSpec.tv_sec = tm + 10; timeSpec.tv_nsec = 0; rc = sem_timedwait(pSemId,& timeSpec);

它解决了这个问题。

+0

很高兴你解决了这个问题!使用绝对时间的时间相当滞后,其中每个其他类似函数都使用相对时间。 – Dummy00001