主題:多線程里關于時間分配的問題? 共有34289人關注過本帖 |
---|
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 [只看該作者]
程序已發,請查收。
|
|
單帖管理 | 引用 | 回復 |