主題:多線程里關(guān)于時間分配的問題? 共有34286人關(guān)注過本帖 |
---|
Rite2009 |
1樓 |
多線程里關(guān)于時間分配的問題? Post By:2009-10-11 18:01:00 [只看該作者]
我用的9260 evc,程序里有6個線程在運行。發(fā)現(xiàn)時間保證的并不好。為啥?
每個線程框架如下: ---------------------------- threadfun(lp) {    ........     while(1){      .........      Sleep(1000);      .........     }     .......... } 其中一個線程是存儲數(shù)據(jù) threadSave(lp) {          while(1){      Sleep(1000);      GetLocalTime(&tCurrentTime);      CreateFile(.......);      SetFilePointer(.......);      WriteFile(.......);     }     ........... } 我想的應(yīng)該是每秒鐘存儲一次數(shù)據(jù),結(jié)果發(fā)現(xiàn)有時候4秒才存一次,有時候需要6秒。怎么時間相差這么大呢?問題出在什么地方?謝謝指點! |
|
單帖管理 | 引用 | 回復(fù) |
x10 |
2樓 |
Post By:2009-10-11 19:35:00 [只看該作者]
CE缺省給每個線程分配的運行時間是100ms,如果每個線程運行時間在ms級的話,應(yīng)當(dāng)沒有問題。另外所描述的文件寫線程應(yīng)當(dāng)有個CloseHandle()才對吧?或者把CreateFile放到循環(huán)外?
|
|
單帖管理 | 引用 | 回復(fù) |
Rite2009 |
3樓 |
Post By:2009-10-11 23:10:00 [只看該作者]
嗯,是的,是有個CloseHandle()的,不然資源就浪費會造成溢出的。我對那個Sleep(1000)還不是太理解,在Sleep(1000)過程中,相當(dāng)于本線程處于休眠狀態(tài),CE會去執(zhí)行其它線程?
按照程工的說法,應(yīng)該是沒問題的,我想也是,WindowsCE還是非常強大的一個系統(tǒng)嘛,我每個線程的代碼真正執(zhí)行時間應(yīng)該是很短的,那我這的問題出在什么地方呢? |
|
單帖管理 | 引用 | 回復(fù) |
zhl |
4樓 |
Post By:2009-10-12 13:52:00 [只看該作者]
我們也做了相應(yīng)的測試,1s的精度是肯定可以保證的。請告知email地址,可以將我們的測試程序發(fā)給你。
|
|
單帖管理 | 引用 | 回復(fù) |
Rite2009 |
5樓 |
Post By:2009-10-12 14:47:00 [只看該作者]
我的郵箱:litaoffc@qq.com  謝謝!
|
|
單帖管理 | 引用 | 回復(fù) |
zhl |
6樓 |
Post By:2009-10-12 16:59:00 [只看該作者]
程序已發(fā),請查收。
|
|
單帖管理 | 引用 | 回復(fù) |