在写游戏时钟类时,应确保时钟的计算是以某个固定的CPU为标准的。下面通过一个例子来阐述如何实现这一思想:

    // 记录特定进程的affinity maskunsigned long lProcessAffinityMask;// 记录系统的affinity maskunsigned long lSystemAffinityMask;::GetProcessAffinityMask(::GetCurrentProcess(), &lProcessAffinityMask, &lSystemAffinityMask);// 将指定线程(此处以当前线程为例)限定在第1个CPU上执行::SetThreadAffinityMask(::GetCurrentThread(), 1);// 获取当前CPU(第1个CPU)每秒tick的次数LARGE_INTEGER lpFrequency;::QueryPerformanceFrequency(&lpFrequency);// 获取程序执行到现在的时间LARGE_INTEGER lpCountStart;::QueryPerformanceCounter(&lpCountStart);// 将指定线程限定在任意CPU(GetProcessAffinityMask返回的CPU mash集)上执行::SetThreadAffinityMask(::GetCurrentThread(), lProcessAffinityMask);// do something...::SetThreadAffinityMask(::GetCurrentThread(), 1);// 获取程序执行到现在的时间LARGE_INTEGER lpCountEnd;::QueryPerformanceCounter(&lpCountEnd);::SetThreadAffinityMask(::GetCurrentThread(), lProcessAffinityMask);int timeElasped=( ((lpCountEnd.QuadPart - lpCountStart.QuadPart) * 1000)/lpFrequency.QuadPart);cout<<timeElasped<<endl;

我们可以看到,获取CPU时钟相关的代码段都被指定在了是在CPU0(即第1个CPU)上执行的(代码段的线程被指定在第1个CPU),这就确保了时钟的统一性。

在写游戏时钟类时,应确保时钟的计算是以某个固定的CPU为标准的相关推荐

  1. RCC——系统时钟函数分析时钟的配置流程和自己动手写时钟配置函数配置时钟,实现超频

    下面是SystemInit(void)函数的源代码:重点和时钟配置有关的是SetSysClock()函数 void SystemInit (void) {/* Reset the RCC clock ...

  2. STM32使用内部时钟HSI作为系统时钟及配置Systick定时器

    参考:https://blog.csdn.net/huangyangquan/article/details/78790443 https://www.cnblogs.com/dustinzhu/p/ ...

  3. Spartan-6的时钟资源、全局时钟缓冲器/多路复用器

    时钟资源 时钟布线资源具有高速.低SKEW的特点,它对系统设计非常重要,即使系统速率不高,也应该关注时钟设计,以消除潜在的时钟危险.Spartan-6器件包含16个全局时钟资源和40个I/O区域时钟资 ...

  4. python写好的代码怎么给别人使用-10分钟学会用python写游戏!Python其实很简单!...

    原标题:10分钟学会用python写游戏!Python其实很简单! Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以在这里给各位看官们准备了高价值Python学习视频教程 ...

  5. linux同步硬件和系统时钟,liunx系统下时钟不同步会出现问题 怎么同步Linux 的系统时钟和硬件时钟?...

    linux的系统时钟在很多地方都要用到,要是不准,就会出现一些奇怪的问题: 在linux中,用于时钟查看和设置的命令主要有date.hwclock和clock.linux时钟分为系统时钟(system ...

  6. 用Python和Pygame写游戏-从入门到精通(1)

    From: http://eyehere.net/2011/python-pygame-novice-professional-1/ 博客刚开,打算做一个Pygame的系列,翻译自Will McGug ...

  7. python编的游戏越玩越卡_用Python写游戏,不到十分钟就学会了

    安装pygame 本人电脑是windows 10.python3.6,pygame下载地址:pypi.python.org/pypi/Pygame- 请自行下载对应python版本的pygame 运行 ...

  8. 单片机课程设计——《基于AT89S52单片机和DS1302时钟芯片的电子时钟(可蓝牙校准)》...

    引言 本设计以AT89S52单片机为控制核心,时钟芯片DS1302提供时钟源,配合LCD1602液晶显示模块,组成基本硬件系统,同时利用HC-05嵌入式蓝牙串口通讯模块,可在手机端进行日期.时间的校准 ...

  9. 单片机课程设计——《基于AT89S52单片机和DS1302时钟芯片的电子时钟(可蓝牙校准)》... 1

    引言 本设计以AT89S52单片机为控制核心,时钟芯片DS1302提供时钟源,配合LCD1602液晶显示模块,组成基本硬件系统,同时利用HC-05嵌入式蓝牙串口通讯模块,可在手机端进行日期.时间的校准 ...

最新文章

  1. iOS下JS与原生OC互相调用
  2. Leetcode-937-Reorder Log Files-(Easy)
  3. 用户画像标签维度_神策数据钟秉哲:一文了解用户标签画像,从洞察到突破
  4. RabbitMq链接
  5. Thread.interrupt()方法理解
  6. python choice添加下拉框_自定义Django Form中choicefield下拉菜单选取数据库内容实例...
  7. Integer进制转换
  8. 设置eclipse自动生成的author等注释
  9. Latex 表格内文字过长自动换行 表格内单元格内容强制换行
  10. perl语言简单入门
  11. 用Rufus 3.0.1304把Windows 10 装入移动硬盘
  12. 公司企业邮箱IP被列入国际黑名单组织怎么解决
  13. k3s 快速入门 - traefix 使用 - 1
  14. 纳米壳聚糖骨形成蛋白水凝胶/壳聚糖/蒙脱土纳米复合水凝胶/甘草多糖壳聚糖水凝胶的制备
  15. ios开发读取剪切板的内容_iOS开发之详解剪贴板
  16. 【Java并发基础】Java内存模型解决有序性和可见性
  17. C# Invoke和BeginInvoke(1)
  18. linux摄像头拍照程序,Android开发:Camera初探——控制摄像头拍照
  19. 后代选择器与子元素选择器
  20. 什么是缓存穿透、缓存雪崩、缓存击穿

热门文章

  1. $().html()对ie9无效,不注意这点,\9和\0就可能对hack IE11\IE9\IE8无效
  2. ios采用什么技术_在不锈钢技术成熟的今天,为什么汽车不采用呢?不仅仅是价格问题...
  3. Opencv4测试报错00007FFB3253A9C0 (ntdll.dll)处引发的异常: 0xC0000005: 读取位置 0x0000000000000010 时发生访问冲突
  4. [微信小程序]商城之购买商品数量实现
  5. Swift 字面量表达
  6. 明文存密码成惯例?Facebook 6 亿用户密码可被 2 万员工直接看
  7. sql语句中left join和inner join中的on与where的区别分析
  8. 一、javaSE (二十三)多线程
  9. 又一个强大的PHP5.3依赖注入容器
  10. mysql的基本知识