- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想在信号量上等待 20 英里秒,如下所示,但是当我打印 tv_sec 和 tv_nsec 的值时,它们的值变得非常大。
任何人都可以帮助理解下面的代码。
if (clock_gettime(CLOCK_REALTIME, &ts) == -1)
{
//throw error
}
ts.tv_nsec += 20000000;
ts.tv_sec += ts.tv_nsec / 1000000000;
ts.tv_nsec %= 1000000000;
sem_timedwait(&semaphore, &ts)
最佳答案
应该很大。clock_gettime(CLOCK_REALTIME, &ts) 给出自大纪元时间以来的滴答声,您正在添加到该返回值。
来自http://man7.org/linux/man-pages/man2/clock_gettime.2.html手册页。
All implementations support the system-wide realtime clock, which is identified by CLOCK_REALTIME. Its time represents seconds and nanoseconds since the Epoch. When its time is changed, timers for a relative interval are unaffected, but timers for an absolute point in time are affected.
来自 sem_timedwait(3) - Linux 手册页
int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);
abs_timeout 参数指向一个结构,该结构指定自 Epoch 以来以秒和纳秒为单位的绝对超时
关于c - 特定时间的 sem_timedwait(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27946983/
我正在阅读有关sem_timedwait()的手册,但无法弄清楚该示例。我目前的理解是: 如果 sem_timedwait() 超时,则返回 -1 并将 errno 设置为 ETIMEDOUT。因此我
我写了一个小类,封装了共享锁和共享信号量。这些类通过了我所有的单元测试,除了一个:大约 60% 的时间使用 sem_timedwait 锁定共享内存信号量失败。这是我的代码: SharedLock::
我想在信号量上等待 20 英里秒,如下所示,但是当我打印 tv_sec 和 tv_nsec 的值时,它们的值变得非常大。 任何人都可以帮助理解下面的代码。 if (clock_gettime(CLOC
如果 10 秒后它不能减少信号量(另一个线程可以或不能增加它),我试图让我的程序中的线程停止我看到我可以为此使用 sem_timedwait() 但我无法在网上找到一个好的例子。所以我只想替换这个:
我使用 eCos 开发嵌入式系统:我在同一进程中有 2 个线程和 1 个信号量。 线程 A 将信号量初始化为 0,以便第一次尝试获取信号量时将被阻止。 线程 A 向线程 B 发送命令,并提供回调。 线
我尝试在 AIX 中使用 sem_timedwait。 我收到此错误: *“ld:0711-317 错误: undefined symbol :.sem_timedwait”* 我可以猜到,我缺少一些
我有 3 个进程需要同步。进程一做某事然后唤醒进程二并休眠,进程二做某事然后唤醒进程三并休眠,进程三做某事并唤醒进程一并休眠。整个循环定时运行大约 25hz(由外部同步到进程一之前触发我的“真实”应用
假设我有一个程序使用 sem_timedwait 等待 100 毫秒(获取当前时间,加上 100 毫秒,将结果用作 abs_timeout,cf. man page ).现在碰巧系统时间在等待信号量时
int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout); 的示例代码使用 CLOCK_REALTIME 作为 clock_g
我正在尝试使用 sem_timedwait() 重复锁定和解锁信号量。基于示例 here ,我通过以下方式将我的结构 timespec 设置为 20 毫秒超时: sem_t semaphore; /
我正在尝试将一个使用信号量的项目(来自 linux)移植到 Mac OS X 但是一些 posix 信号量没有在 Mac OS X 上实现 我在这个端口打到的一个是 sem_timedwait() 我
我们在 RedHat Enterprise Linux 系统上看到带有 pthreads sem_timedwait 的奇怪行为。它仅在 5.3 及更高版本中出现。 当我们使用 sem_init 在后
我是一名优秀的程序员,十分优秀!