主题:线程时间片问题 共有39925人关注过本帖 |
---|
9260 |
1楼 |
线程时间片问题 Post By:2009-8-13 14:52:00 [只看该作者]
9260开发板中设置的,线程时间片为100ms。时间太长了。
请问,如何更改此设置? |
|
单帖管理 | 引用 | 回复 |
lxs |
2楼 |
Post By:2009-8-13 17:25:00 [只看该作者]
DWORD CeGetThreadQuantum( HANDLE hThread ); 得到线程的时间片值
BOOL CeSetThreadQuantum( HANDLE hThread, DWORD dwTime ); 设置线程的时间片值 更具体的用法 参考msdn。 |
|
单帖管理 | 引用 | 回复 |
9260 |
3楼 |
Post By:2009-8-14 10:37:00 [只看该作者]
用的9260板子
1)主线程和用户创建的线程时间片一样吗? 2)要求100ms内完成一次CAN通讯、数据采集、DA驱动    建立3个辅助线程实现上述功能; 关于线程优先级,及时间片如何设置,可以给些建议吗? |
|
单帖管理 | 引用 | 回复 |
9260 |
4楼 |
Post By:2009-8-14 14:10:00 [只看该作者]
修改线程时间片大小,会有什么影响?
|
|
单帖管理 | 引用 | 回复 |
x10 |
5楼 |
Post By:2009-8-14 14:11:00 [只看该作者]
CE任务调度的分辨率是1ms,在没有任何调度的情况下,一个线程的运行时间片缺省为100ms。做一个100ms发触发事件的线程,其他的功能顺序执行即可。
|
|
单帖管理 | 引用 | 回复 |
9260 |
6楼 |
Post By:2009-8-14 14:28:00 [只看该作者]
我的理解如下,请指正:
100ms内完成3项任务(CAN通讯线程、数据采集线程、DA驱动线程) 以默认100ms的时间片轮转调度的话,100ms内只会处理一个线程任务,其他任务无法在规定时间内完成。 |
|
单帖管理 | 引用 | 回复 |
9260 |
7楼 |
Post By:2009-8-15 11:35:00 [只看该作者]
9260板子
创建一串口线程,线程函数返回缓冲区中收到的字符数,时间片更改为20ms,由电脑上的串口助手每隔50ms自动发送一字节数据“00”,为何收到的字符个数却大多为5个,个别有6个? WaitCommEvent()函数的工作原理可以粗略讲讲吗?谢谢 |
|
单帖管理 | 引用 | 回复 |
x10 |
8楼 |
Post By:2009-8-15 14:45:00 [只看该作者]
串口驱动程序接收到数据后, 会发送事件通知上层应用程序, WaitCommEvent()函数则是响应RxEvent等事件. 所描述的情况, 我们会在上班后第一时间测试,并与你联系.请确认串口baud rate, 谢谢!
|
|
单帖管理 | 引用 | 回复 |
9260 |
9楼 |
Post By:2009-8-15 19:12:00 [只看该作者]
串口的波特率使用的是:9600
再问:创建的辅助串口线程时间片设置为20ms; 主线程CeSetThreadQuantum(WINMAIN,20),是否有效? |
|
单帖管理 | 引用 | 回复 |
x10 |
10楼 |
Post By:2009-8-15 21:30:00 [只看该作者]
应当是有效的,没有什么限制。
|
|
单帖管理 | 引用 | 回复 |
x10 |
11楼 |
Post By:2009-8-15 21:32:00 [只看该作者]
BOOL CeSetThreadQuantum(
  HANDLE hThread,    DWORD dwTime );  应检查返回值以确认设置是否成功。 |
|
单帖管理 | 引用 | 回复 |
9260 |
12楼 |
Post By:2009-8-15 22:35:00 [只看该作者]
1)利用CEGetThreadQuantum()函数查看串口辅助线程时间片返回值,确为设置的20ms
但CeSetThreadQuantum(WINMAIN,20), 然后CEGetThreadQuantum(WINMAIN)返回值为0,不知为何? 2)请问,上述我所描述的情况“每隔50ms自动发送一个字符00,串口线程函数将缓冲区字符数返回,收到的却多数为2个,个别有3个”,应该是什么原因?谢谢 另:底层的驱动程序,是否收到一帧数据即向上层发送事件?谢谢 |
|
单帖管理 | 引用 | 回复 |
lxs |
13楼 |
Post By:2009-8-16 10:33:00 [只看该作者]
你是设置线程的时间片,参数怎么为主函数呀?把参数改为线程的句柄就对了,我是测试过的。
|
|
单帖管理 | 引用 | 回复 |
zhl |
14楼 |
Post By:2009-8-16 10:47:00 [只看该作者]
底层的串口驱动程序是每串口中断一次会通知上层程序。串口产生接收中断的条件一般是硬件FIFO接收到8个字节,或者接收数据到不满FIFO同时时间间隔超过4倍的波特率。
|
|
单帖管理 | 引用 | 回复 |
9260 |
15楼 |
Post By:2009-8-17 10:03:00 [只看该作者]
具体遇到的细节问题我发送到support@emtronix.com这个邮箱了
烦请解惑!期待回复!谢谢 |
|
单帖管理 | 引用 | 回复 |