-
Notifications
You must be signed in to change notification settings - Fork 22
Open
Description
现在的代码在sem_timedwait()返回时,会:
- success
- time out
- 根据errno进行throw
sem_timedwait()函数会syscall被singal处理打断时,会返回EINTR错误,并不代表出现了问题,只是交由用户判断是否继续wait。
现在的版本在遇到EINTR时会当作错误处理,造成如下效果:

详情请见:
https://linux.die.net/man/3/sem_timedwait
https://stackoverflow.com/a/52332012
较为合适的做法是:
while ((s = sem_timedwait(&sem, &ts)) == -1 && errno == EINTR)
continue; /* Restart if interrupted by handler */Metadata
Metadata
Assignees
Labels
No labels