怎样实现多处理器下的精确计时?

饶鹏 2008-03-30 07:14:10
QueryPerformanceCounter() 不问要哪个处理器的计数,直接返回一个。多个处理器的计数可以不同。
又,一个进程或者线程可以和数个处理器关联,所以在程序内,执行同一个QueryPerformanceCounter()的处理器可以有多个。
所以结果是,如果一个进程/线程和多个处理器关联,那么同一个QueryPerformanceCounter()调用返回的结果可能不是基于同一个处理器的,结果可能出现偏差。

现在想到的方法只有用SetThreadAffinityMask()函数把线程和单一处理器关联,不过这样的话可能对单个线程的处理能力有所影响。
多个线程的同步计时还没办法解决,因为如果把一个进程和单一处理器关联,就没办法利用多个处理器了,程序速度会下降很多。
...全文
49 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
饶鹏 2008-04-02
  • 打赏
  • 举报
回复
http://msdn2.microsoft.com/en-us/library/bb173458(VS.85).aspx

Game Timing and Multicore Processors
By Chuck Walbourn, Software Design Engineer

XNA Developer Connection (XDC)

December 2005


没有完美的解决方法,但有可以使用的方法。
饶鹏 2008-03-31
  • 打赏
  • 举报
回复
up
饶鹏 2008-03-30
  • 打赏
  • 举报
回复
单一程序内多个线程的同步计时是现在最需要解决的问题,这个不能保证的话程序根本构造不起来。
饶鹏 2008-03-30
  • 打赏
  • 举报
回复
难道只能用这个方法吗?我是想要一个没有副作用的方法,比如我能指定函数获取哪个CPU的时间计数。
strip 2008-03-30
  • 打赏
  • 举报
回复
你一个thread给一个cpu还不够? 把一个thread放两个cpu上运行就不合算了

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧