gpt4 book ai didi

c - 如何正确使用 sem_timedwait()

转载 作者:太空宇宙 更新时间:2023-11-04 02:36:09 32 4
gpt4 key购买 nike

如果 10 秒后它不能减少信号量(另一个线程可以或不能增加它),我试图让我的程序中的线程停止我看到我可以为此使用 sem_timedwait() 但我无法在网上找到一个好的例子。所以我只想替换这个:

sem_wait(&full);
//go on with stuff

像这样:

sem_timedwait(&full,someTimeStuffThatRepresents10Secs);
if(sem_timedwaitTookLongerThan10){
pthread.exit(NULL);
}else{
//do stuff
}

感谢任何帮助!

最佳答案

/* Calculate relative interval as current time plus 10 seconds */

struct timespec ts;
if (clock_gettime(CLOCK_REALTIME, &ts) == -1)
{
/* handle error */
return -1;
}

ts.tv_sec += 10;
while ((s = sem_timedwait(&full, &ts)) == -1 && errno == EINTR)
continue; /* Restart if interrupted by handler */
/* Check what happened */
if (s == -1)
{
if (errno == ETIMEDOUT)
printf("sem_timedwait() timed out\n");
else
perror("sem_timedwait");
} else
printf("sem_timedwait() succeeded\n");

Linux Programmer's Manual 对此给出了详尽的例子

SEM_WAIT(3)

请在控制台输入 man sem_timedwait 或访问文档 online .

关于c - 如何正确使用 sem_timedwait(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37010836/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com