论坛风格切换切换到宽版
  • 7114阅读
  • 26回复

奇怪的处理落? [复制链接]

上一主题 下一主题
离线Advance
发帖
2680
樱饼
0
博丽神社的喝茶券(威望)
2
春度
427
交易币
0
只看该作者 15楼 发表于: 2009-03-27
跑了5分钟没有发现任何问题......
离线mk124
发帖
58
樱饼
0
博丽神社的喝茶券(威望)
0
春度
10
交易币
0
只看该作者 16楼 发表于: 2009-03-27
timeGetTime()不太可能抽风吧= =
是不是你的调试器有延迟了……?
离线littlewater
发帖
793
樱饼
5
博丽神社的喝茶券(威望)
1
春度
59
交易币
0
只看该作者 17楼 发表于: 2009-03-27
那就直接和系统有关了吧^^
毕竟WIN不是实时的,估计这问题一下子也搞不定咯~♪

作罢
水水
离线mk124
发帖
58
樱饼
0
博丽神社的喝茶券(威望)
0
春度
10
交易币
0
只看该作者 18楼 发表于: 2009-03-27
郁闷死了= =
不能作罢啊|||||||
离线littlewater
发帖
793
樱饼
5
博丽神社的喝茶券(威望)
1
春度
59
交易币
0
只看该作者 19楼 发表于: 2009-03-28
象AVC大这样的机器自然就米问题了,我觉得这没啥办法啊,本来不是实时系统的东西
要不你就做缓冲,多开几个缓冲试试……
水水
离线水月
发帖
62
樱饼
0
博丽神社的喝茶券(威望)
0
春度
0
交易币
0
只看该作者 20楼 发表于: 2009-03-29
用QueryPerformanceFrequency
和QueryPerformanceCounter可以取得纳秒级的精确分辨率,这个和硬件有关,最差386机器上也有微妙级的分辨率
然后如果是多核CPU请设置SetThreadAffinityMask线程对CPU的亲和力,防止跨CPU调用
此外sleep精度是16毫秒级的,还有sleep还有线程切换问题
解决办法是
判断剩余时间是否与大16毫秒。如果大于16就休眠大于部分。剩下时间用忙等待来精确休眠。这样即使sleep发生偏差,忙等待也会纠正过来。
离线littlewater
发帖
793
樱饼
5
博丽神社的喝茶券(威望)
1
春度
59
交易币
0
只看该作者 21楼 发表于: 2009-03-29
但是在水水机器上根本没有时间在一个17MS内完成
结果处理逻很正常不是?
水水
离线Advance
发帖
2680
樱饼
0
博丽神社的喝茶券(威望)
2
春度
427
交易币
0
只看该作者 22楼 发表于: 2009-03-29
结果只有0.xx ms可以休息么(1000/60=...)

啊,纯水是不好的,所以补充点有用的东西吧

TO 20楼:

我想有些地方你的理解似乎不太正确,这里正好有篇中文的:
http://www.cnblogs.com/dksoft/archive/2008/05/25/1207093.html
http://blog.csdn.net/axx1611/archive/2007/09/15/1786599.aspx

比如我的主板PIT就是8254.2
  1. text:800125D1                 call    _HalpAcquireSystemHardwareSpinLock@0 ; HalpAcquireSystemHardwareSpinLock()
  2. .text:800125D6                 mov     al, 0
  3. .text:800125D8                 out     43h, al         ; Timer 8253-5 (AT: 8254.2).
  4. .text:800125DA                 pushfw
  5. .text:800125DC                 popfw
  6. .text:800125DE                 jmp     short $+2
  7. .text:800125E0                 in      al, 40h         ; Timer 8253-5 (AT: 8254.2).
  8. .text:800125E2                 pushfw
  9. .text:800125E4                 popfw
  10. .text:800125E6                 jmp     short $+2
  11. .text:800125E8                 movzx   edx, al
  12. .text:800125EB                 in      al, 40h         ; Timer 8253-5 (AT: 8254.2).
[ 此帖被Advance在2009-03-29 20:25重新编辑 ]
离线littlewater
发帖
793
樱饼
5
博丽神社的喝茶券(威望)
1
春度
59
交易币
0
只看该作者 23楼 发表于: 2009-03-29
QueryPerformanceFrequency这个函数好像在不同的机器上得到的值意义不同,有的机器(很多是老P4的)
返回的是3.5M晶振,而很多新的双核四核返回的直接是主频……不知道是什么原因?

PIT嗯呢?
说起来可能会偏差话题了……
水水
离线mk124
发帖
58
樱饼
0
博丽神社的喝茶券(威望)
0
春度
10
交易币
0
只看该作者 24楼 发表于: 2009-03-29
早就调用SetThreadAffinityMask绑到第一个处理器上了,还提高线程到最高优先了|||
还有,AVC大大好像说过……Sleep精度还决定于timeBeginPeriod()和线程优先度呢
发帖
139
樱饼
0
博丽神社的喝茶券(威望)
0
春度
6
交易币
0
只看该作者 25楼 发表于: 2009-04-04
完全看不懂

東方神武劇LB
群号:51453278
招募帖:http://bbs.thproject.org/read.php?tid=74635
离线biilibili
发帖
3
樱饼
0
博丽神社的喝茶券(威望)
0
春度
0
交易币
0
只看该作者 26楼 发表于: 2013-09-30
真心强大!!就是看不懂
快速回复
限100 字节
 
上一个 下一个