首页 > 其他分享 >11.11

11.11

时间:2024-12-16 14:34:14浏览次数:4  
标签:交流电源 函数 时标 Windows clock 11.11 毫秒

1. 硬件时标计数器的发展
起初的 IBM PC 是不包含任何硬件时标计数器的。它确实有一个记录一天之中的时间的
时钟,软件也可以读取这个时间。最早的微软的 C 运行时库复制了 ANSI C 库,提供了
time_t time(time_t*) 函数。该函数会返回一个距离 UTC 时间 1970 年 1 月 1 日 0:00 的秒
数。旧版本的 time() 函数返回的是一个 32 位有符号整数,但是在经历了 Y2K3 之后,它被
修改成了一个 64 位的有符号整数。
起初的 IBM PC 会使用来自交流电源的周期性的中断来唤醒内核去进行任务切换或是进行
其他内核操作。在北美,这个周期是 16.67 毫秒,因为交流电源是 60Hz 的。如果交流电
源是 50Hz 的话,这个周期就是 20 毫秒。

自 Windows 98(可能更早)以来,微软的 C 运行时提供了 ANSI C 函数 clock_t clock()。
该函数会返回一个有符号形式的时标计数器。常量 CLOCKS_PER_SEC 指定了每秒钟的时标的
次数。返回值为 -1 表示 clock() 不可用。clock() 会基于交流电源的周期性中断记录时标。
clock() 在 Windows 上的实现方式与 ANSI 所规定的不同,在 Windows 上它所测量的是经
过时间而非 CPU 时间 4。最近,clock() 被根据 GetSystemTimeAsfileTime() 重新实现了。在
2015 年时它的时标是 1 毫秒,分辨率也是 1 毫秒。这使得它成了 Windows 上一个优秀的
毫秒级别的时钟.

自 Windows 2000 开始,可以通过调用 DWORD GetTickCount() 来实现基于 A/C 电源中断的
软件时标计数器。GetTickCount() 的时标计数值取决于 PC 的硬件,可能会远比 1 毫秒长。
GetTickCount() 会进行一次将时标转换为毫秒的计算来消除部分不确定性。这个方法的一
个升级版是 ULONGLONG GetTickCount64(),它会以 64 位无符号整数的形式返回相同的时标

计数值,这样可以测量更长的处理时间。虽然没有办法知道当前的中断周期,但下面这对
函数可以缩短和然后恢复周期:
MMRESULT timeBeginPeriod(UINT)
MMRESULT timeEndPeriod(UINT)
这两个函数作用于全局变量上,会影响所有的进程和其他函数,如取决于交流电源的中断
周期的 Sleep()。另外一个函数 DWORD timeGetTime() 可以通过另一种方法获取相同的时标
计数值。

1. 硬件时标计数器的发展
起初的 IBM PC 是不包含任何硬件时标计数器的。它确实有一个记录一天之中的时间的
时钟,软件也可以读取这个时间。最早的微软的 C 运行时库复制了 ANSI C 库,提供了
time_t time(time_t*) 函数。该函数会返回一个距离 UTC 时间 1970 年 1 月 1 日 0:00 的秒
数。旧版本的 time() 函数返回的是一个 32 位有符号整数,但是在经历了 Y2K3 之后,它被
修改成了一个 64 位的有符号整数。
起初的 IBM PC 会使用来自交流电源的周期性的中断来唤醒内核去进行任务切换或是进行
其他内核操作。在北美,这个周期是 16.67 毫秒,因为交流电源是 60Hz 的。如果交流电
源是 50Hz 的话,这个周期就是 20 毫秒。

自 Windows 98(可能更早)以来,微软的 C 运行时提供了 ANSI C 函数 clock_t clock()。
该函数会返回一个有符号形式的时标计数器。常量 CLOCKS_PER_SEC 指定了每秒钟的时标的
次数。返回值为 -1 表示 clock() 不可用。clock() 会基于交流电源的周期性中断记录时标。
clock() 在 Windows 上的实现方式与 ANSI 所规定的不同,在 Windows 上它所测量的是经
过时间而非 CPU 时间 4。最近,clock() 被根据 GetSystemTimeAsfileTime() 重新实现了。在
2015 年时它的时标是 1 毫秒,分辨率也是 1 毫秒。这使得它成了 Windows 上一个优秀的
毫秒级别的时钟.

自 Windows 2000 开始,可以通过调用 DWORD GetTickCount() 来实现基于 A/C 电源中断的
软件时标计数器。GetTickCount() 的时标计数值取决于 PC 的硬件,可能会远比 1 毫秒长。
GetTickCount() 会进行一次将时标转换为毫秒的计算来消除部分不确定性。这个方法的一
个升级版是 ULONGLONG GetTickCount64(),它会以 64 位无符号整数的形式返回相同的时标

计数值,这样可以测量更长的处理时间。虽然没有办法知道当前的中断周期,但下面这对
函数可以缩短和然后恢复周期:
MMRESULT timeBeginPeriod(UINT)
MMRESULT timeEndPeriod(UINT)
这两个函数作用于全局变量上,会影响所有的进程和其他函数,如取决于交流电源的中断
周期的 Sleep()。另外一个函数 DWORD timeGetTime() 可以通过另一种方法获取相同的时标
计数值。

标签:交流电源,函数,时标,Windows,clock,11.11,毫秒
From: https://www.cnblogs.com/xscya/p/18610073

相关文章

  • 11.11大促背后的技术保障:SLA与SLO的深度解析与实践案例
    作者:京东物流冯志文背景又到一年的11.11大促日,最近很多团队邮件上下游确认SLA,你是不是还没搞明白服务质量SLA、SLO等概念?本文通过理论知识以及基于SLO告警治理的实践经验分享。详细介绍如何设置SLO、有效的告警泛滥治理、以及如何根据SLO的指标来指导11.11大促及优化服务性能和......
  • 11.11日报
    今天完成了设计模式的实验十四,以下为实验内容:实验14:代理模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解代理模式的动机,掌握该模式的结构;2、能够利用代理模式解决实际问题。     [实验任务一]:婚介所婚介所其实就是找对象的一个代理,请仿......
  • 使用 Postman(v11.11.1) 完成系统自动化测试
    1、变量Postman提供两种变量类型,一种是全局变量,一种是环境变量。使用Postman进行测试时,使用全局变量或者使用环境变量,效果是一样的,但还是建议不同用途的变量放在对应的地方。1.1全局变量全局变量在整个Postman中所有接口共享。以下数据建议放在全局变量中:对于平台所有相......
  • 【稳定性】浅谈11.11大促之预案演练 | 京东物流技术团队
    一、预案演练预案演练主要解决的问题是:根据单个系统的应急预案,模拟应用系统的一种或多种故障场景,验证系统的可靠性。1.1、预案演练形式预案演练根据应急预案组织相关的应急组织机构和人员,针对事先假设的异常应急场景,通过模拟实际决策、指挥和技术操作,完成应急响应及处置的过程,从而......
  • 2023.11.11西九华二日游
    河南西九华,适宜周末二日游。阜阳出发到阜南县郎湾村渡口,坐轮渡到对岸,然后到固始西九华山。淡季景点人很少,不少住宿、餐饮不开门营业。......
  • 2023.11.11 模拟赛
    2023.11.11模拟赛复盘前记通过四个半小时的努力,得到了41pts/400pts的高分。当时心态很爆炸,经过不断的反思,发现自己比赛意识太差,暴力打不出,正解想出来tmd不会写,这就是最大的问题。所以以后要多打比赛还得多复盘。比赛链接洛谷NOIP2023模拟赛T1种树简化题意:给定......
  • 11.11博客
    今天跟两位同学一起去完成调查报告任务,现在已经完成。晚上的时候1.想了想流程图咋写,写了个总的流程图,接下来该建数据库,把菜单先罗列出来,再分工开干。2.学习javaweb,根据黑马接口文档完成相应功能3.遇到点问题,找1班齐文博帮助了下,自己没仔细看,没注意。......
  • 11.11 陷哗
    求一个好用的linux音乐播放器,我现在在用elisa早上为了搞PGP密钥搞到了十二点四十,结果最后不知道为啥导入密钥失败了......tails发行版用的GnuPG也是2.2不支持x448的版本。操想着要打省选的别假了......
  • 11.11鲜花
    **楼***,今天看了芙宁娜演示。感觉剧情真的出乎意料,有点刀(不是刃),后面涉及剧透就不再说了,总之编剧真的神还有今天晚上OJ炸了,然后某人惊奇地打开了****(在强烈要求下山区了)开始颓。(一共死了28次)()然后他对着那个若智的建模差点笑死......
  • 闲话11.11
    今天打了一场模拟赛,又垫底了......