gpt4 book ai didi

linux - 如何使用毫秒级的 pthread_cond_timedwait

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:36:33 25 4
gpt4 key购买 nike

我正在尝试将 pthread_cond_timedwait 用于毫秒 sleep 间隔,但我没有获得 sleep 持续时间。我的线程比我提到的睡得更多。下面是我的实现。如果我哪里错了,请告诉我。

    struct timeval tp;
struct timespec ts;
int rc = gettimeofday(&tp, NULL);

ts.tv_sec = tp.tv_sec;
ts.tv_nsec = tp.tv_usec * 1000;

ts.tv_nsec += 30 * 1000000; //30 is my milliseconds

pthread_mutex_lock(&mtxPlaybackWait);
pthread_cond_timedwait(&playbackSignal, &mtxPlaybackWait, &ts);
pthread_mutex_unlock(&mtxPlaybackWait);

最佳答案

timespac 可能会溢出并导致超时。
尝试以下操作:

     ts.tv_sec = tp.tv_sec;
ts.tv_nsec = tp.tv_usec * 1000;

ts.tv_nsec += 30 * 1000000;

ts.tv_sec += ts.tv_nsec / 1000000000L;
ts.tv_nsec = ts.tv_nsec % 1000000000L;

关于linux - 如何使用毫秒级的 pthread_cond_timedwait,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17166083/

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