主题:多线程里关于时间分配的问题?

  共有16775人关注过本帖    
Rite2009
1楼


多线程里关于时间分配的问题?  发帖心情 Post By:2009-10-11 18:01:00   [只看该作者]

我用的9260 evc,程序里有6个线程在运行。发现时间保证的并不好。为啥?

每个线程框架如下:
----------------------------
threadfun(lp)
{
   ........
    while(1){
     .........
     Sleep(1000);
     .........
    }
    ..........
}

其中一个线程是存储数据
threadSave(lp)
{
    
    while(1){
     Sleep(1000);
     GetLocalTime(&tCurrentTime);
     CreateFile(.......);
     SetFilePointer(.......);
     WriteFile(.......);
    }
    ...........
}

我想的应该是每秒钟存储一次数据,结果发现有时候4秒才存一次,有时候需要6秒。怎么时间相差这么大呢?问题出在什么地方?谢谢指点!

  单帖管理 | 引用 | 回复 回到顶部
x10
2楼


  发帖心情 Post By:2009-10-11 19:35:00   [只看该作者]

CE缺省给每个线程分配的运行时间是100ms,如果每个线程运行时间在ms级的话,应当没有问题。另外所描述的文件写线程应当有个CloseHandle()才对吧?或者把CreateFile放到循环外?

  单帖管理 | 引用 | 回复 回到顶部
Rite2009
3楼


  发帖心情 Post By:2009-10-11 23:10:00   [只看该作者]

嗯,是的,是有个CloseHandle()的,不然资源就浪费会造成溢出的。我对那个Sleep(1000)还不是太理解,在Sleep(1000)过程中,相当于本线程处于休眠状态,CE会去执行其它线程?
按照程工的说法,应该是没问题的,我想也是,WindowsCE还是非常强大的一个系统嘛,我每个线程的代码真正执行时间应该是很短的,那我这的问题出在什么地方呢?

  单帖管理 | 引用 | 回复 回到顶部
zhl
4楼


  发帖心情 Post By:2009-10-12 13:52:00   [只看该作者]

我们也做了相应的测试,1s的精度是肯定可以保证的。请告知email地址,可以将我们的测试程序发给你。

  单帖管理 | 引用 | 回复 回到顶部
Rite2009
5楼


  发帖心情 Post By:2009-10-12 14:47:00   [只看该作者]

我的邮箱:litaoffc@qq.com  谢谢!

  单帖管理 | 引用 | 回复 回到顶部
zhl
6楼


  发帖心情 Post By:2009-10-12 16:59:00   [只看该作者]

程序已发,请查收。

  单帖管理 | 引用 | 回复 回到顶部

返回首页

多线程里关于时间分配的问题?

用户名:
            验证码: 验证码,看不清楚?请点击刷新验证码
内容: