#define DELAY_ONE_MICROSECOND (-10) 时间是负数的原因

  以下摘自DOOM的博文《内核同步对象

    http://blog.csdn.net/lqk1985/article/details/2541867  

  “最后一个参数&timeout是一个64位超时值的地址,单位为100纳秒。正数的超时表示一个从1601年1月1日起的绝对时间。调用KeQuerySystemTime函数可以获得当前系统时间。负数代表相对于当前时间的时间间隔。如果你指定了绝对超时,那么系统时钟的改变也将影响到你的超时时间。如果系统时间越过你指定的绝对时间,那么永远都不会超时。相反,如果你指定相对超时,那么你经过的超时时间将不受系统时钟改变的影响。

为什么是1601年1月1日

  许多年以前,当我第一次学习Win32 API时,我曾迷惑为什么选择1601年1月1日作为Windows
NT的时间起点。在我写了一组时间转换函数后我明白了这个问题的原因。每个人都知道可被4整除的年份是闰年。许多人也知道世纪年(如1900年)应例外,
虽然这些年份都能被4整除但它们不是闰年。少数人还知道能被400整除的年份(如1600和2000)是例外中的例外,它们也是闰年。而1601年1月1
日正好是一个400年周期的开始。如果把它作为时间信息的起点,那么把NT时间信息转换为常规日期表达(或相反)就不用做任何跳跃操作。”

时间: 2024-10-29 19:13:36

#define DELAY_ONE_MICROSECOND (-10) 时间是负数的原因的相关文章

ssbc 手撕包菜运行一段时间就停止的原因

原文: ssbc 手撕包菜运行一段时间就停止的原因 ssbc 运行一段时间后,大概半个小时,就莫名奇妙停止不爬了,通过错误提示可以看出,其实是ssbc与mysql(maridb)断开连接了,导致程序异常,当然就插入不了数据了. 所以解决办法很简单,有多种解决办法: 一种是写个脚本,定时重启爬虫.这种方法比较笨,效率低下,因为不知道什么时候爬虫停止了. 另一种是修改下代码,当mysql断开连接时,再次重连mysql就可以拉. 附上方法二修改后的爬虫源码(simdht_worker.py) 附件下载

随记1(#define a 10和const int a=10)

正是求职笔试旺季,前几天听说有人遇到此题:#define a 10 和const int a=10的区别,废话不多说,下面来解释一下: #define 指令是定义符号常量 const   定义的是常变量(变量的值不能改变) 符号常量只是用一个符号常量代替一个字符串,在预编译的时候进行替换回来.没有类型,在内存中不存在以符号长量命名的内存单元: 而变量是具有类型的,在内存中也存在着以它命名的内存单元,并且可以用sizeof测出他的长度 上面的区别也就是说第一个a是没有类型的,是一个符号常量 而第二

详谈php ip2long 出现负数的原因及解决方法

php提供了ip2long与long2ip方法对ip地址处理. 1.ip2long — 将一个IPV4的字符串互联网协议转换成数字格式 int ip2long ( string $ip_address )      参数: ip_address 一个标准格式的地址.      返回值: 返回IP地址转换后的数字 或 FALSE 如果 ip_address 是无效的. 2.long2ip — 将数字格式转换成一个IPV4的字符串互联网协议 string long2ip ( string $prop

查看Oracle中存储过程长时间被卡住的原因

1:查V$DB_OBJECT_CACHE SELECT * FROM V$DB_OBJECT_CACHE WHERE name='CUX_OE_ORDER_RPT_PKG' AND LOCKS!='0'; 注意:CUX_OE_ORDER_RPT_PKG 为存储过程的名称. 发现 locks=2 2:按对象查出sid的值 select /*+ rule*/  SID from V$ACCESS WHERE object='CUX_OE_ORDER_RPT_PKG'; 注意:CUX_OE_ORDER

VMware 12安装虚拟机Mac OS X 10.10使用小技巧(虚拟机Mac OS X 10.10时间设置,虚拟机Mac OS X 10.10通过代理上网,Mac OS X 10.10虚拟机优化,VMware虚拟机相互复制)

1:修改Mac OS 系统时间 2:Mac OS系统 通过代理上网 VMware 12安装Mac OS X 10.10虚拟机优化心得 虚拟显卡硬伤,所以必须要优化下才能用,优化的原则就是能精简的精简,能关特效的就关,不要duang,下面是一些优化设置: 1,从Dock上移除Dashboard 每次不小心点到这个,必然卡机,毛玻璃效果虚拟显卡可吃不消,果断移到垃圾桶,要开应用多的是方法. 2,禁用各种华而不实的透明窗口和动画效果 OS X Yosemite 中大量采用透明菜单.窗口和标题栏,这需要

APUE学习笔记——6.10 时间与时间例程 time_t

Unix提供的最基本的时间服务室日历时间(纪元时间),也就是计算1970年1月1日0时0分0秒到当前的秒数.该秒数用time_t表示. typedef long time_t; /* 时间值time_t 为长整型的别名*/ 1.获取/设置时间 1.1 time和time_t 函数time()可以用于获取当前日历时间 #include <time.h> time_t time(time_t *calptr); Returns: value of time if OK,?1 on error 当前

HBase写入操作卡住长时间不返回的原因分析

本文出处:http://blog.csdn.net/chaijunkun/article/details/44238163,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在原始出处查看此文. 这些天研究HBase,写了一段Demo代码,具体如下: @Test public void doTest() throws MasterNotRunningException, ZooKeeperConnectionException, IOException { Config

(一)Python入门-2编程基本概念:10时间表示-unix时间点-毫秒和微妙-time模块

一:时间表示 计算机中时间的表示是从“1970 年 1月 1日 00:00:00”开始,以毫秒(1/1000 秒) 进行计算.我们也把1970 年这个时刻成为“unix 时间点”. 这样,我们就把时间全部用数字来表示了.时间本质上就是数字 python中可以通过 time.time() 获得当前时刻,返回的值是以秒为单位,带微秒 (1/1000 毫秒)精度的浮点值.例如:1530167364.8566. [操作] 1 >>> import time 2 >>> b =

10.时间编程

1.时间的类型: Coordinated Universal Time(UTC):世界标准时间,也就是大家所熟知的格林威治标准时间(Greenwich Mean Time,GMT). Calendar Time:日历时间,是用"从一个标准时间点(如:1970年1月1日0点)到此时经过的秒数"来表示的时间. ? 2.时间操作: 获取日历时间:man 2 time: (主要:man 后面的数字表示的是章节:1(留空):命令 2:函数 3:系统调用.) NAME time - get tim