门户网站手机版,公司网站cms,利用网站文件下载做推广,哪个网站可以用来做读书笔记背景#xff1a;在线程中使用wait时#xff0c;中间修改了系统时间#xff0c;线程一直阻塞#xff0c;并未向下执行。
原因分析#xff1a;wait等待时间采用了系统时间去等待#xff0c;系统时间向后修改后#xff0c;无法等到相应的时间点#xff0c;从而导致线程阻…背景在线程中使用wait时中间修改了系统时间线程一直阻塞并未向下执行。
原因分析wait等待时间采用了系统时间去等待系统时间向后修改后无法等到相应的时间点从而导致线程阻塞无法执行。
解决办法采用起点开始测量的单调递增的系统计时器该计时器不受系统时钟、用户更改时间或进程暂停的影响。该计时器的精度应该比CLOCK_REALTIME高但不能保证修改之后生效。
clock的几个时钟
CLOCK_REALTIME: 系统实时时间即从 1970-01-01 00:00:00 UTC 到当前时间所经过的时间它受系统时钟和用户更改时间的影响。CLOCK_MONOTONIC: 从某个未定义的起点开始测量的单调递增的系统计时器。该计时器不受系统时钟、用户更改时间或进程暂停的影响。该计时器的精度应该比CLOCK_REALTIME高但不能保证。CLOCK_PROCESS_CPUTIME_ID: 用于测量与进程相关的 CPU 时间。通过调用clock_gettime函数来获取进程的 CPU 时间。CLOCK_THREAD_CPUTIME_ID: 用于测量与线程相关的 CPU 时间。通过调用clock_gettime函数来获取线程的 CPU 时间。CLOCK_MONOTONIC_RAW: 类似于CLOCK_MONOTONIC但不提供任何简单的防抖动机制。如果需要使用此时钟请确保您了解自己在做什么。CLOCK_REALTIME_COARSE: 类似于CLOCK_REALTIME但提供较低的分辨率。CLOCK_MONOTONIC_COARSE: 类似于CLOCK_MONOTONIC但提供较低的分辨率。CLOCK_BOOTTIME: 系统启动时间包括系统暂停的时间。CLOCK_REALTIME_ALARM: 类似于CLOCK_REALTIME但在定时器到期时会唤醒系统。CLOCK_BOOTTIME_ALARM: 类似于CLOCK_BOOTTIME但在定时器到期时会唤醒系统。CLOCK_TAI: TAI国际原子时时间它以秒为单位提供一个单调递增的计时器类似于CLOCK_MONOTONIC