主题:多线程里关于时间分配的问题? 共有47785人关注过本帖 |
---|
Rite2009 |
1楼 |
![]() |
多线程里关于时间分配的问题? ![]()
我用的9260 evc,程序里有6个线程在运行。发现时间保证的并不好。为啥?
每个线程框架如下: ---------------------------- threadfun(lp) {    ........     while(1){      .........      Sleep(1000);      .........     }     .......... } 其中一个线程是存储数据 threadSave(lp) {          while(1){      Sleep(1000);      GetLocalTime(&tCurrentTime);      CreateFile(.......);      SetFilePointer(.......);      WriteFile(.......);     }     ........... } 我想的应该是每秒钟存储一次数据,结果发现有时候4秒才存一次,有时候需要6秒。怎么时间相差这么大呢?问题出在什么地方?谢谢指点! |
单帖管理 | 引用 | 回复 ![]() |
x10 |
2楼 |
![]() |
![]()
CE缺省给每个线程分配的运行时间是100ms,如果每个线程运行时间在ms级的话,应当没有问题。另外所描述的文件写线程应当有个CloseHandle()才对吧?或者把CreateFile放到循环外?
|
单帖管理 | 引用 | 回复 ![]() |
Rite2009 |
3楼 |
![]() |
![]()
嗯,是的,是有个CloseHandle()的,不然资源就浪费会造成溢出的。我对那个Sleep(1000)还不是太理解,在Sleep(1000)过程中,相当于本线程处于休眠状态,CE会去执行其它线程?
按照程工的说法,应该是没问题的,我想也是,WindowsCE还是非常强大的一个系统嘛,我每个线程的代码真正执行时间应该是很短的,那我这的问题出在什么地方呢? |
单帖管理 | 引用 | 回复 ![]() |
zhl |
4楼 |
![]() |
![]()
我们也做了相应的测试,1s的精度是肯定可以保证的。请告知email地址,可以将我们的测试程序发给你。
|
单帖管理 | 引用 | 回复 ![]() |
Rite2009 |
5楼 |
![]() |
![]()
我的邮箱:litaoffc@qq.com  谢谢!
|
单帖管理 | 引用 | 回复 ![]() |
zhl |
6楼 |
![]() |
![]()
程序已发,请查收。
|
单帖管理 | 引用 | 回复 ![]() |