免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 10328 | 回复: 20

对线程和进程的时间分析 [复制链接]

论坛徽章:
0
发表于 2003-08-10 14:58 |显示全部楼层
首先申明,我是菜鸟.菜到什么程度,大家看看下面的代码.
代码要求:取得1000次单独创建进程的时间.
  1. #include
  2. #include
  3. #include
  4. #include
  5. #include


  6. strut timeval {
  7. long tv_sec; /* 秒数 */
  8. long tv_usec; /* 微秒数 */
  9. };

  10. int gettimeofday(struct timeval *tv,struct timezone *tz);


  11. main()
  12. {
  13. struct timeval tpstart,tpend;
  14. float timeuse;
  15. unsigned int i;

  16. gettimeofday(&tpstart,NULL);

  17. for(i=0;i<1000;i++)
  18. pid_t fork();

  19. gettimeofday(&tpend,NULL);
  20. timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+tpend.tv_usec-tpstart.tv_usec;
  21. timeuse/=1000000;
  22. printf("Used Time:%f\n",timeuse);
  23. exit(0);
  24. }
复制代码



取得线程时间:
//线程
不知道该怎么做.因为int pthread_create(pthread_t * thread, pthread_attr_t * attr,
void * (*start_routine)(void *), void * arg)
需要返回一个参数,比如:
int ret;
ret=pthread_create(pthread_t * thread, NULL, void * (*start_routine)(void *), void * arg);

那么时间当中就包含了赋值的时间了.

不知道大家对线程和进程的创建的时间取得有什么好的建议呢?

论坛徽章:
0
发表于 2003-08-10 20:27 |显示全部楼层

对线程和进程的时间分析


  1. include <sys/types.h>;
  2. #include <sys/stat.h>;
  3. #include <stdio.h>;


  4. struct timeval {
  5. long tv_sec; /* 秒数 */
  6. long tv_usec; /* 微秒数 */
  7. };

  8. int gettimeofday(struct timeval *tv,struct timezone *tz);


  9. main()
  10. {
  11. struct timeval tpstart,tpend;
  12. float  timeuse;
  13. unsigned int i;
  14.         int rc;

  15.         int p1 = 0;

  16. gettimeofday(&tpstart,NULL);
  17. for(i=0;i<1000;i++)


  18. rc = pthread_create(&sid, NULL, (void*)&threads, (void *)&p1))
  19.                


  20. gettimeofday(&tpend,NULL);
  21. timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+tpend.tv_usec-tpstart.tv_usec;
  22. timeuse/=1000000;
  23. printf("Used Timef\n",timeuse);
  24. exit(0);
复制代码

论坛徽章:
0
发表于 2003-08-10 20:27 |显示全部楼层

对线程和进程的时间分析

上面取得的是线程的1000次创建的时间

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-08-10 21:01 |显示全部楼层

对线程和进程的时间分析

偶觉得,已经不菜了。
如果你菜,那偶就还是鸟蛋了。

论坛徽章:
0
发表于 2003-08-10 22:09 |显示全部楼层

对线程和进程的时间分析

虽然不太懂但是也要说两句!不知道这几条行不行!?
用Real_timer Jiffy,或者SoftIRQ,
Task_struct中有一个start_time 是进程创建时的Jiffies。
但是线程具体情况不太清楚!


还有,好像是这样
strut timeval {
int tv_sec; /* 秒数 */
int tv_usec; /* 微秒数 */
};
struct timespec是long的纳妙!

论坛徽章:
0
发表于 2003-08-11 19:00 |显示全部楼层

对线程和进程的时间分析

jackie God    的意思是不是说:strut timeval取得不是一个正确的时间呢?
应该使用struct timespec?
我不是很清楚.
另外:以上两个程序是不是正确还没有确定,我机器上无linux,这几个是我随手编出来的.没有验证过.

论坛徽章:
0
发表于 2003-08-11 19:25 |显示全部楼层

对线程和进程的时间分析

这两个都不会很准确吧
如果不是使用计帐时间的话

因为系统中同时有多个进程在进行
不可能只让你独占CPU的

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-08-11 20:16 |显示全部楼层

对线程和进程的时间分析

从原理上讲,偶同意无双的。

论坛徽章:
0
发表于 2003-08-12 13:33 |显示全部楼层

对线程和进程的时间分析

应该使用struct timespec!
既然不记帐,可以使用atomic操作!
betty 该用户已被删除
发表于 2003-08-31 22:59 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP