clock_nanosleep避免过度睡眠

简介:
/*
 *   “oversleeping” problem is particularly marked for a process that uses a loop to re start
 *   a sleep that is interrupted by a signal handler. If signals are delivered at a high rate
 *   , then a relative sleep (of the type performed by nanosleep()) can lead to large inaccuracies 
 *   in the time a process spends sleeping. We can avoid the oversleeping problem by making an
 *   initial call to clock_gettime() to retrieve the time, adding the  desired amount to that time, 
 *   and then calling  clock_nanosleep() with the TIMER_ABSTIME  flag (and restarting the system
 *   call if it is interrupted by a signal handler).
 */

struct timespec request;
/* Retrieve current value of CLOCK_REALTIME clock */
if (clock_gettime(CLOCK_REALTIME, &request) == -1) 
    errExit("clock_gettime");
request.tv_sec += 20;               /* Sleep for 20 seconds from now */
s = clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &request, NULL); 
if (s != 0) {
    if (s == EINTR)
        printf("Interrupted by signal handler\n");
    else
        errExitEN(s, "clock_nanosleep");
}

目录
相关文章
|
5月前
|
vr&ar 图形学 UED
优化图形渲染与物理模拟:减少Draw Calls与利用LOD技术提升性能
【7月更文第10天】在现代游戏开发和实时渲染应用中,性能优化是至关重要的环节,它直接关系到用户体验的流畅度和真实感。本文将深入探讨两种关键技术手段——减少Draw Calls和使用Level of Detail (LOD) 技术,来提升图形渲染与物理模拟的效率。
245 2
|
6月前
|
算法 C语言 Ruby
分形逃逸时间算法中的 Normalized Iteration Count(NIC)技术 让颜色更柔和
Normalized Iteration Count (NIC) 技术是一种提升逃逸时间算法中分形图像质量的方法,它产生更平滑的颜色过渡。数学公式表示为:`mu = n + 1 - log(log(|Z(n)|)) / log(p)`,其中 `Z(n)` 是迭代次数,`|Z(n)|` 是复数模长,`p` 通常取2。示例代码提供了 Ruby, Maxima 和 C 语言的实现。
|
7月前
|
存储 算法 Linux
理解和使用 C++ 中的 `times` 函数:度量进程时间
理解和使用 C++ 中的 `times` 函数:度量进程时间
122 0
|
Linux 异构计算 Windows
如何expanded time来观察信号到来的先后顺序?(仿真工具使用技巧)【Modesim/Questasim】
如何expanded time来观察信号到来的先后顺序?(仿真工具使用技巧)【Modesim/Questasim】
如何expanded time来观察信号到来的先后顺序?(仿真工具使用技巧)【Modesim/Questasim】
|
开发者
Alarm-Clock 实验过程|学习笔记
快速学习 Alarm-Clock 实验过程
235 0
Alarm-Clock 实验过程|学习笔记
|
前端开发 容器
你可能不知道的 transition 技巧与细节
你可能不知道的 transition 技巧与细节
247 0
你可能不知道的 transition 技巧与细节
|
Python
Python编程:time模块实现函数执行时间计时器
Python编程:time模块实现函数执行时间计时器
155 0
|
编解码 安全 Linux
Linux内核开发基础-低精度timer_list和高精度hrtimer定时器
上篇文章讲解了如何正确的使用内核延时函数,在进行驱动开发时,可能会经常用到精确地延时操作。除此之外,如果要实现一个定时任务,那就需要用到定时器。作为一项基础功能需求,Linux内核提供了定时器相关的实现。下面就具体看一下,Linux内核所提供的定时器实现。
1232 0
|
存储 JavaScript 算法