p_bench_pthread_create.c
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* ==== p_bench_pthread_create.c =============================================
  2.  * Copyright (c) 1993 by Chris Provenzano, proven@athena.mit.edu
  3.  *
  4.  * Description : Benchmark mutex lock and unlock times
  5.  *
  6.  *  1.00 93/11/08 proven
  7.  *      -Started coding this file.
  8.  */
  9. #define PTHREAD_KERNEL
  10. #include <errno.h>
  11. #include <pthread.h>
  12. #include <stdio.h>
  13. extern pthread_attr_t pthread_attr_default;
  14. /* ==========================================================================
  15.  * new_thread();
  16.  */
  17. void * new_thread(void * arg)
  18. {
  19. PANIC();
  20. }
  21. /* ==========================================================================
  22.  * usage();
  23.  */
  24. void usage(void)
  25. {
  26. printf("p_bench_getpid [-d?] [-c count]n");
  27.     errno = 0;
  28. }
  29. main(int argc, char **argv)
  30. {
  31. struct timeval starttime, endtime;
  32. pthread_mutex_t lock;
  33. pthread_t thread_id;
  34. int count = 10000;
  35. int debug = 0;
  36. int i;
  37. char word[256];
  38.     /* Getopt variables. */
  39.     extern int optind, opterr;
  40.     extern char *optarg;
  41. pthread_init();
  42. /* Shut timer off */
  43. machdep_unset_thread_timer(NULL);
  44. pthread_attr_default.stackaddr_attr = &word;
  45. while ((word[0] = getopt(argc, argv, "c:d?")) != (char)EOF) {
  46. switch (word[0]) {
  47. case 'd':
  48. debug++;
  49. break;
  50. case 'c':
  51. count = atoi(optarg);
  52. break;
  53. case '?':
  54. usage();
  55. return(OK);
  56. default:
  57. usage();
  58. return(NOTOK);
  59. }
  60. }
  61. if (gettimeofday(&starttime, NULL)) {
  62.   perror ("gettimeofday");
  63.   return 1;
  64. }
  65. for (i = 0; i < count; i++) {
  66. if (pthread_create(&thread_id, & pthread_attr_default, new_thread, NULL)) {
  67. printf("Bad pthread create routinen");
  68. exit(1);
  69. }
  70. }
  71. if (gettimeofday(&endtime, NULL)) {
  72.   perror ("gettimeofday");
  73.   return 1;
  74. }
  75. printf("%d getpid calls took %d usecs.n", count, 
  76. (endtime.tv_sec - starttime.tv_sec) * 1000000 +
  77. (endtime.tv_usec - starttime.tv_usec));
  78. return 0;
  79. }