Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2013
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function()
  2. {
  3.     for (int k = 0; k < 10; k++)
  4.     {
  5.         pthread_mutex_lock (&pmutex);
  6.        
  7.         pthread_t pthreads[CPUTHRDS];
  8.         launch_threads(pthreads);
  9.  
  10.         /* Unlock and start timer */
  11.         pthread_mutex_unlock (&pmutex);
  12.         tot_time = -msecond();
  13.  
  14.         /* Join taskthreads when they are done */
  15.         join_threads(pthreads);
  16.         tot_time += msecond();
  17.  
  18.         //<do something>
  19.     }
  20. }
  21.  
  22. void launch_threads(pthread_t *pthreads)
  23. {
  24.     pthread_attr_t attr;
  25.     pthread_attr_init(&attr);
  26.     pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
  27.    
  28.     printf("#HOST# Starting Task Threads\n");    
  29.  
  30.     /* Launch the CPU threads */
  31.     for (int i = 0; i < CPUTHRDS; i++)
  32.     {
  33.         fprintf(stderr, "launchthread %d\n", i);
  34.         int rc = pthread_create(&pthreads[i], &attr, cpu_thread, NULL);
  35.         if (rc) {
  36.             printf("ERROR; return code from pthread_create() is %d\n", rc);
  37.             exit(-1);
  38.         }
  39.     }
  40.     printf("#HOST# CPU-Threads started: %d\n", CPUTHRDS);
  41.  
  42.     pthread_attr_destroy(&attr);
  43. }
  44.  
  45. void join_threads(pthread_t *pthreads)
  46. {
  47.     int rc = 0;
  48.     for(int i=0; i < CPUTHRDS; i++)
  49.         {
  50.             void *status;
  51.             rc = pthread_join(pthreads[i], &status);
  52.             if (rc) {
  53.                 printf("ERROR; return code from pthread_join() is %d\n", rc);
  54.                 exit(-1);
  55.             }
  56.             printf("#HOST# Thread %d joined\n", i);
  57.         }
  58.         printf("#HOST# All threads joined\n");
  59. }
  60.  
  61. void *cpu_thread(void *arg)
  62. {
  63.     unsigned long thid = pthread_self();
  64.     fprintf(stderr, "started %lu\n", thid);
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement