LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 972|回复: 5

怎么取得进程和线程的切换、创建和消亡的时间!

[复制链接]
发表于 2003-8-7 16:13:30 | 显示全部楼层 |阅读模式
有一个函数:gettimeofday()
这个函数得的时间包含哪些呢?
另外:怎么取得进程和线程的切换、创建和消亡的时间?而且,要求要把它打印出来,其中打印的时间不能算在里面。
求各位高手帮忙!:help
 楼主| 发表于 2003-8-10 19:56:03 | 显示全部楼层
首先申明,我是菜鸟.菜到什么程度,大家看看下面的代码.
代码要求:取得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);

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

不知道大家对线程和进程的创建的时间取得有什么好的建议呢?
 楼主| 发表于 2003-8-10 20:23:53 | 显示全部楼层

  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 Time:%f\n",timeuse);
  24. exit(0);
  25. }
复制代码
 楼主| 发表于 2003-8-10 20:25:30 | 显示全部楼层
上面取得的是线程的1000次创建的时间
发表于 2003-8-10 20:39:19 | 显示全部楼层
这个问题我没有研究过,不过用wait3、wait4系统调用可以取得子进程的资源信息,你可以参考一下。
编译内核的时候有一个BSD进程记帐的模块,不过我还没有找到相关的资料。
 楼主| 发表于 2003-8-11 18:53:14 | 显示全部楼层
这个也是我自己想出来的.
其实我对linux不是很懂.
你所说的"wait3、wait4系统调用",我不懂的.
我不需要求的子进程的信息,我只要求进程的创建时间。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表