我基本上是试图设置一个定时器,以等待从当前时间指定的秒数。我知道timespec的tv_sec只包含整数。所以,如果我需要等待1.5秒或0.1秒,我就在挣扎着该怎么做。
下面是我为它编写的代码:
struct timespec timeToWait;
clock_gettime(CLOCK_REALTIME, &timeToWait);
int rt;
timeToWait.tv_sec += p1->intrval; //adding specified wait time
pthread_mutex_lock(&lock);
do{
rt = pthread_cond_timedwait(&cond,&lock,&timeToWait);
}while (rt == 0);
pthread_mutex_unlock(&lock);发布于 2022-04-08 02:25:05
struct timespec有另一个名为tv_nsec的字段,它指定纳秒部分。
因此,如果要等待1.5秒,请将1添加到timeToWait.tv_sec,并将500000000添加到timeToWait.tv_nsec。如果在这样做之后,timeToWait.tv_nsec大于1000000000,那么从timeToWait.tv_nsec中减去1000000000,然后再向timeToWait.tv_sec添加一个。
https://stackoverflow.com/questions/71790967
复制相似问题