标题: @@实时线程问题请教@@@
dynamic221
小试牛刀
Rank: 2
注册用户



UID 128078
精华 0
积分 0(积分有什么用?)
帖子 63
阅读权限 10
注册 2005-7-26
状态 离线
发表于 2007-9-19 15:16  资料  个人空间  短消息  加为好友 
@@实时线程问题请教@@@

你的帖子还没有人回复吗?先到娱乐板块放松一下吧@@@实时线程问题请教@@@9p6shM4S*g
gw0n8o:PnG N/[
I


Na%V
?*D'|
打算在一个线程中进行计时,故此开了一个线程如下Linux伊甸园论坛 u!Y
Af+B/X6`1}

void *thread_child (void *data)Linux伊甸园论坛2fim(J9XwB5qZoO
{Linux伊甸园论坛0|.x%g&A^^
OG

   int count = 1;www.linuxeden.com3`%N$Xp
?

   struct timeval tStart, tEnd;
1`dJ#Nut   long timeuse;
i;p"N-~9jwww.linuxeden.com   while(1)www.linuxeden.com${;C.zI)Q
   {
f
W/Q&n3?|L R
      count++;
n*KZ;N'aNLinux伊甸园论坛      gettimeofday(&tStart,NULL);//取得开始的时间
E-zg;c]4om

      usleep(1000);;OQI(\7g0Qd
      gettimeofday(&tEnd,NULL);Linux伊甸园论坛kP*b,uyO*`
      timeuse = 1000000*(tEnd.tv_sec - tStart.tv_sec)   + (tEnd.tv_usec - tStart.tv_usec);

?:`]7L$}L_Linux伊甸园论坛
      printf("time:%d\n",timeuse);#n,n8K4gw
   }Linux伊甸园论坛3gz iFI-o
},Naa(O\%D
1、如果该线程定义为普通线程,则如果程序中存在两个线程运行,usleep的时间<10000us,则打印出的time为20ms左右,ZTS0T,kR%Q1Z
2、如果该线程定义为SCHED_RR线程,另外一个线程定义为普通线程,则如果程序中的usleep部分的睡眠时间<2000us打印出的time跟usleep中的数值范围接近,但是只要超过2000us,即使是2010us,打印出的时间也是20ms左右,
DCS&u-nYI9XT\&Q对于1我认为,只要调用sleep主动阻塞线程,则下次调用的时间应该是系统的一个时间片之后,(我得linux版本为2。4板,一个时间片为10ms,而线程为20ms?x线程时间为猜测),所以只要usleep中的数值不炒过一个时间片,程序打印的时间也就是一个时间片,不知我得理解对不?www.linuxeden.com*}dr        l9`/m:g*vPUa
对于2的前半部分我的理解该线程睡眠完毕后因为优先级高,所以立刻抢占其他线程的时间,所以打印的时间跟睡眠的时间相接近,但是为什么大于2000后,打印的时间变成了20ms就理解不了了,希望哪位大侠能指点一下,我觉得实时线程应该随时可以抢占别的普通线程的时间运行,所以应该所有的情况,打印的时间都跟睡眠的时间一致才对,但是试验结果不对,请大家指点啊.

顶部
dynamic221
小试牛刀
Rank: 2
注册用户



UID 128078
精华 0
积分 0(积分有什么用?)
帖子 63
阅读权限 10
注册 2005-7-26
状态 离线
发表于 2007-9-19 15:22  资料  个人空间  短消息  加为好友 
回复 #1 dynamic221 的帖子

另外,时间片为10ms为什么<一个时间片时,打印的时间不是10ms而是20ms?

顶部
不容错过的IBM 集群技术资源汇总
flag
版主
Rank: 7Rank: 7Rank: 7
版主



UID 19801
精华 1
积分 28(积分有什么用?)
帖子 5581
阅读权限 100
注册 2002-7-19
状态 离线
发表于 2007-9-20 10:11  资料  个人空间  短消息  加为好友 
。。。。。
v,nn8J:@7|Linux伊甸园论坛这种能算得准才怪了,你执行指令不需要时间吗?





上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。
顶部
不容错过的IBM 集群技术资源汇总
 



当前时区 GMT+8, 现在时间是 2008-5-16 10:57

    Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
Processed in 0.071510 second(s), 5 queries

清除 Cookies - 联系我们 - Linux伊甸园 - Archiver - WAP