项目场景:

在实际项目中,经常会使用Sleep函数进行休眠。


问题描述:

在开发过程中,想要使用Sleep(1)休眠1ms,但是发现调用Sleep(1)后,实际的休眠时间大于1ms。


原因分析:

这是因为Windows并非是一个实时操作系统,由于线程调度机制,所以它的时间精度不是很高。


解决方案:

可以通过下面的方式将Sleep函数精度提升到1-2ms(注意,仍然达不到1ms):

// 使用timeBeginPeriod、timeEndPeriod所需要依赖的头文件和库
#include <Windows.h>
#include <MMSystem.h>
#pragma comment(lib, "winmm.lib")timeBeginPeriod(1);  // 设置精度为1毫秒
::Sleep(1);          // 当前线程挂起一毫秒
timeEndPeriod(1);    // 结束精度设置

如果还想进一步提升Sleep函数的精度,可以使用vs2013中的下列函数:

std::this_thread::sleep_for(std::chrono::nanoseconds(100));

经测试,发现nanoseconds()精度只能达到1.03ms左右(依旧达不到微秒级、纳秒级),但是比使用timeBeginPeriod()精度要高。

Windows Sleep函数休眠精度相关推荐

  1. Windows内核函数的命名

    <Windows内核情景分析--采用开源代码ReactOS(上.下册)>本书通过分析ReactOS的源代码介绍了Windows内核各个方面的结构.功能.算法与具体实现.本小节为大家介绍Wi ...

  2. 在C#中调用windows API函数

    Api函数是构筑Windws应用程序的基石,每一种Windows应用程序开发工具,它提供的底层函数都间接或直接地调用了Windows API函数,同时为了实现功能扩展,一般也都提供了调用Windows ...

  3. mysql union all sum_[数据库]SQL Server UNION ALL 结果 SUM函数造成精度丢失

    [数据库]SQL Server UNION ALL 结果 SUM函数造成精度丢失 0 2020-08-03 18:00:30 SQL Server 数据类型 使用场景: 在进行多维度汇总数据时,需要将 ...

  4. Python调用Windows API函数编写录音机和音乐播放器

    功能描述: 1)使用tkinter设计程序界面: 2)调用Windows API函数实现录音机和音乐播放器. 参考代码: . 运行界面:

  5. Windows睡眠或者休眠后无法唤醒问题的解决方案

    Windows睡眠或者休眠后无法唤醒问题的解决方案 最近遇到问题,电脑长时间不使用后会进入睡眠或者休眠状态,然后屏幕是全黑的.但是想当我再次使用时,无论敲击键盘或者点击鼠标都无法唤醒电脑,一直处于黑屏 ...

  6. 标准C函数库头文件、POSIX标准库头文件和Windows API函数库头文件说明

    1. 标准C函数库头文件 名字 源自 描述 <assert.h> 包含断言宏,被用来在程序的调试版本中帮助检测逻辑错误以及其他类型的bug. <complex.h> C99 一 ...

  7. python中round函数的精度保留方法---四舍六入五成双

    当我们利用python进行数据计算时,通常会对浮点数保留相应的位数,这时候就会用到round函数,相信各位朋友在进行使用时会遇到各种问题,关于round函数保留精度.保留方法的问题,本文会进行详细的解 ...

  8. Windows API 函数SendMessage与PostMessage使用方法和常见的坑

    Windows API 函数中 SendMessage 与 PostMessage 用处很大,经常被程序员们使用.对老手们来说,了如知掌,但对新手来说,可能会遇到这样那样的问题.我作为一名老手中的新手 ...

  9. Windows API 函数大全

    Windows API函数大全,从事软件开发的朋友可以参考下 1. API之网络函数  WNetAddConnection 创建同一个网络资源的永久性连接  WNetAddConnection2 创建 ...

最新文章

  1. Asp.net Core认证和授权:JWT认证和授权
  2. rhel7 http实例3
  3. rp-provide-from-last
  4. [book]道法自然
  5. 32f407tim4时钟源频率_慎重选择时钟发生器,别让这俩指标影响你的ADC 「图片」...
  6. numpy+matplotlib绘制正弦曲线
  7. Centos6.8 搭建Lvs+Keepalived
  8. ios php mysql实例_如何用PHP/MySQL为 iOS App 写一个简单的web服务器(译) PART1
  9. python 存redis失败无提示_python如何关闭redis
  10. C# 实现自定义的USB设备与上位机进行通信(上位机部分)
  11. 有符号char和无符号char
  12. aac,ogg等音频测试文件下载地址
  13. 《运算放大器权威指南》读书笔记(二)
  14. 微信小程序自定义Dialog弹框
  15. NAT环境FTP服务器的映射及访问过程详解
  16. Excel 自动计算房贷、月供 (附模板)
  17. NCRE考试感想 四级嵌入式(上)
  18. java商城源码视频教程_Java商城秒杀系统设计视频教程学习下载(含项目源码)...
  19. 《魔兽》遭黑客入侵 主城横尸遍野
  20. Java 截取String类型字符串截掉后两位

热门文章

  1. async/await详解
  2. win10系统如何连接内网服务器地址,win10进内网服务器地址
  3. 银河麒麟v10-arm离线部署k8s集群(v1.23.4)
  4. Spring之旅(四):两个小知识 lazy-initiated bean 和 Autowiring Collaborators
  5. 23种设计模式介绍(Python示例讲解)
  6. 独孤九剑与乾坤大挪移—uikiller插件系统
  7. v8 windows vs 中文乱码
  8. Androidi中使用Vitamio视频播放器
  9. 5.Module模块
  10. JAVA翻转课堂微视频管理系统计算机毕业设计Mybatis+系统+数据库+调试部署