Thread runs

Multiple threads

  • A larger example using multiple threads:
  • #include <stdio.h>   /* printf                  */
    #include <unistd.h>  /* sleep, getpid           */
    #include <pthread.h> /* thread create/join/exit */
    
    char const *table[]
       = { "A man, a plan, a canal: Panama!",
           "No lemons, no melon.",
           "Step on no pets.",
           "Was it a rat I saw?",
           "Dog as a devil deified lived as a god.",
           "Able was I ere I saw Elba.",
           "Yawn! Madonna fan? No damn way!",
           "Go hang a salami. I'm a lasagna hog!"
         };
    
    const int table_size = sizeof(table) / sizeof(*table);
    
    void *palindrome(void *p) 
    {
      pthread_t id = pthread_self();
      int max = 5;
      int i, pid;
      
      pid = getpid(); /* all threads have the same pid */
      
      for (i = 0; i < max; ++i) 
      {
        int index = rand() % table_size;
        printf("[p:%i][t:%u]: %s\n", pid, (unsigned)id / 1000000, table[index]);
      }
      
      return NULL;
    }
    
    int main(void) 
    {
      #define COUNT 8
      int i; 
        
      pthread_t thread_id[COUNT];
      
      srand(0);
      
      printf("Creating threads...\n");
      for (i = 0; i < COUNT; ++i)
        pthread_create(&thread_id[i], NULL, palindrome, NULL);
      printf("Done creating threads.\n");  
      
      printf("Waiting on threads...\n");
      for (i = 0; i < COUNT; ++i)
      {
        printf("Joining thread %i\n", i);
        pthread_join(thread_id[i], 0);
      }
      printf("Done waiting on threads.\n");
        
      return 0;
    }
    


    Run #1Run #2
    Creating threads...
    [p:18007][t:686]: Go hang a salami. I'm a lasagna hog!
    [p:18007][t:686]: Was it a rat I saw?
    [p:18007][t:686]: No lemons, no melon.
    [p:18007][t:660]: Go hang a salami. I'm a lasagna hog!
    [p:18007][t:660]: Dog as a devil deified lived as a god.
    [p:18007][t:660]: Able was I ere I saw Elba.
    [p:18007][t:660]: Step on no pets.
    [p:18007][t:660]: Was it a rat I saw?
    [p:18007][t:652]: No lemons, no melon.
    [p:18007][t:652]: Was it a rat I saw?
    [p:18007][t:652]: Was it a rat I saw?
    [p:18007][t:652]: Yawn! Madonna fan? No damn way!
    [p:18007][t:652]: Dog as a devil deified lived as a god.
    [p:18007][t:686]: Step on no pets.
    [p:18007][t:635]: Step on no pets.
    [p:18007][t:669]: No lemons, no melon.
    [p:18007][t:669]: A man, a plan, a canal: Panama!
    [p:18007][t:669]: Was it a rat I saw?
    [p:18007][t:669]: A man, a plan, a canal: Panama!
    [p:18007][t:669]: Go hang a salami. I'm a lasagna hog!
    [p:18007][t:627]: Able was I ere I saw Elba.
    [p:18007][t:627]: Step on no pets.
    Done creating threads.
    Waiting on threads...
    Joining thread 0
    [p:18007][t:635]: Yawn! Madonna fan? No damn way!
    [p:18007][t:635]: Was it a rat I saw?
    [p:18007][t:635]: Was it a rat I saw?
    [p:18007][t:644]: Step on no pets.
    [p:18007][t:644]: No lemons, no melon.
    [p:18007][t:644]: Step on no pets.
    [p:18007][t:644]: Yawn! Madonna fan? No damn way!
    [p:18007][t:686]: Dog as a devil deified lived as a god.
    [p:18007][t:677]: Yawn! Madonna fan? No damn way!
    [p:18007][t:677]: Able was I ere I saw Elba.
    [p:18007][t:677]: Go hang a salami. I'm a lasagna hog!
    [p:18007][t:677]: No lemons, no melon.
    [p:18007][t:677]: A man, a plan, a canal: Panama!
    [p:18007][t:635]: Go hang a salami. I'm a lasagna hog!
    [p:18007][t:644]: Step on no pets.
    [p:18007][t:627]: Yawn! Madonna fan? No damn way!
    [p:18007][t:627]: Was it a rat I saw?
    [p:18007][t:627]: Step on no pets.
    Joining thread 1
    Joining thread 2
    Joining thread 3
    Joining thread 4
    Joining thread 5
    Joining thread 6
    Joining thread 7
    Done waiting on threads.
    
    Creating threads...
    [p:18099][t:2189]: Go hang a salami. I'm a lasagna hog!
    [p:18099][t:2189]: Yawn! Madonna fan? No damn way!
    [p:18099][t:2189]: No lemons, no melon.
    [p:18099][t:2189]: Was it a rat I saw?
    [p:18099][t:2189]: No lemons, no melon.
    [p:18099][t:2181]: Step on no pets.
    [p:18099][t:2172]: No lemons, no melon.
    [p:18099][t:2181]: Able was I ere I saw Elba.
    [p:18099][t:2181]: Was it a rat I saw?
    [p:18099][t:2172]: Step on no pets.
    [p:18099][t:2172]: Dog as a devil deified lived as a god.
    [p:18099][t:2172]: Step on no pets.
    [p:18099][t:2172]: Dog as a devil deified lived as a god.
    [p:18099][t:2139]: Was it a rat I saw?
    [p:18099][t:2181]: Was it a rat I saw?
    [p:18099][t:2181]: A man, a plan, a canal: Panama!
    Done creating threads.
    Waiting on threads...
    Joining thread 0
    Joining thread 1
    [p:18099][t:2139]: Was it a rat I saw?
    [p:18099][t:2139]: A man, a plan, a canal: Panama!
    [p:18099][t:2139]: Go hang a salami. I'm a lasagna hog!
    [p:18099][t:2155]: Dog as a devil deified lived as a god.
    [p:18099][t:2155]: Able was I ere I saw Elba.
    [p:18099][t:2155]: Yawn! Madonna fan? No damn way!
    [p:18099][t:2155]: Step on no pets.
    [p:18099][t:2147]: Step on no pets.
    [p:18099][t:2147]: Was it a rat I saw?
    [p:18099][t:2147]: Go hang a salami. I'm a lasagna hog!
    [p:18099][t:2147]: No lemons, no melon.
    [p:18099][t:2147]: Step on no pets.
    Joining thread 2
    Joining thread 3
    [p:18099][t:2155]: Yawn! Madonna fan? No damn way!
    [p:18099][t:2128]: Yawn! Madonna fan? No damn way!
    [p:18099][t:2139]: Was it a rat I saw?
    [p:18099][t:2128]: Yawn! Madonna fan? No damn way!
    [p:18099][t:2128]: Step on no pets.
    [p:18099][t:2128]: Able was I ere I saw Elba.
    [p:18099][t:2128]: Go hang a salami. I'm a lasagna hog!
    [p:18099][t:2164]: Go hang a salami. I'm a lasagna hog!
    [p:18099][t:2164]: No lemons, no melon.
    [p:18099][t:2164]: A man, a plan, a canal: Panama!
    [p:18099][t:2164]: Was it a rat I saw?
    [p:18099][t:2164]: Step on no pets.
    Joining thread 4
    Joining thread 5
    Joining thread 6
    Joining thread 7
    Done waiting on threads.
    
    Run #3Run #4
    Creating threads...
    [p:18172][t:2086]: Go hang a salami. I'm a lasagna hog!
    [p:18172][t:2086]: Was it a rat I saw?
    [p:18172][t:2086]: No lemons, no melon.
    [p:18172][t:2086]: Go hang a salami. I'm a lasagna hog!
    [p:18172][t:2086]: Step on no pets.
    [p:18172][t:2077]: Yawn! Madonna fan? No damn way!
    [p:18172][t:2077]: No lemons, no melon.
    [p:18172][t:2077]: Able was I ere I saw Elba.
    [p:18172][t:2077]: Step on no pets.
    [p:18172][t:2077]: Step on no pets.
    [p:18172][t:2060]: Dog as a devil deified lived as a god.
    [p:18172][t:2060]: Was it a rat I saw?
    [p:18172][t:2044]: Was it a rat I saw?
    [p:18172][t:2069]: No lemons, no melon.
    [p:18172][t:2069]: Step on no pets.
    [p:18172][t:2069]: Dog as a devil deified lived as a god.
    [p:18172][t:2069]: A man, a plan, a canal: Panama!
    [p:18172][t:2069]: Was it a rat I saw?
    [p:18172][t:2052]: Was it a rat I saw?
    [p:18172][t:2052]: Go hang a salami. I'm a lasagna hog!
    [p:18172][t:2052]: Able was I ere I saw Elba.
    [p:18172][t:2052]: Yawn! Madonna fan? No damn way!
    [p:18172][t:2052]: Step on no pets.
    [p:18172][t:2060]: Yawn! Madonna fan? No damn way!
    Done creating threads.
    Waiting on threads...
    Joining thread 0
    [p:18172][t:2035]: Dog as a devil deified lived as a god.
    [p:18172][t:2035]: Was it a rat I saw?
    [p:18172][t:2035]: Go hang a salami. I'm a lasagna hog!
    [p:18172][t:2035]: No lemons, no melon.
    [p:18172][t:2035]: Step on no pets.
    [p:18172][t:2044]: A man, a plan, a canal: Panama!
    [p:18172][t:2044]: Yawn! Madonna fan? No damn way!
    [p:18172][t:2044]: Step on no pets.
    [p:18172][t:2044]: Able was I ere I saw Elba.
    [p:18172][t:2060]: Yawn! Madonna fan? No damn way!
    [p:18172][t:2060]: Go hang a salami. I'm a lasagna hog!
    [p:18172][t:2027]: Was it a rat I saw?
    [p:18172][t:2027]: No lemons, no melon.
    [p:18172][t:2027]: A man, a plan, a canal: Panama!
    [p:18172][t:2027]: Was it a rat I saw?
    [p:18172][t:2027]: Step on no pets.
    Joining thread 1
    Joining thread 2
    Joining thread 3
    Joining thread 4
    Joining thread 5
    Joining thread 6
    Joining thread 7
    Done waiting on threads.
    
    Creating threads...
    [p:18259][t:3199]: Go hang a salami. I'm a lasagna hog!
    [p:18259][t:3199]: Was it a rat I saw?
    [p:18259][t:3199]: No lemons, no melon.
    [p:18259][t:3174]: Go hang a salami. I'm a lasagna hog!
    [p:18259][t:3174]: Dog as a devil deified lived as a god.
    [p:18259][t:3174]: Able was I ere I saw Elba.
    [p:18259][t:3174]: Step on no pets.
    [p:18259][t:3157]: Was it a rat I saw?
    [p:18259][t:3166]: No lemons, no melon.
    [p:18259][t:3166]: Was it a rat I saw?
    [p:18259][t:3166]: Was it a rat I saw?
    [p:18259][t:3166]: Yawn! Madonna fan? No damn way!
    [p:18259][t:3166]: Step on no pets.
    [p:18259][t:3174]: Step on no pets.
    Done creating threads.
    [p:18259][t:3140]: Dog as a devil deified lived as a god.
    [p:18259][t:3140]: A man, a plan, a canal: Panama!
    [p:18259][t:3182]: No lemons, no melon.
    [p:18259][t:3182]: Was it a rat I saw?
    Waiting on threads...
    Joining thread 0
    [p:18259][t:3182]: A man, a plan, a canal: Panama!
    [p:18259][t:3182]: Able was I ere I saw Elba.
    [p:18259][t:3182]: Yawn! Madonna fan? No damn way!
    [p:18259][t:3140]: Go hang a salami. I'm a lasagna hog!
    [p:18259][t:3140]: Step on no pets.
    [p:18259][t:3140]: Yawn! Madonna fan? No damn way!
    [p:18259][t:3149]: Dog as a devil deified lived as a god.
    [p:18259][t:3191]: Yawn! Madonna fan? No damn way!
    [p:18259][t:3191]: Was it a rat I saw?
    [p:18259][t:3191]: Was it a rat I saw?
    [p:18259][t:3191]: Go hang a salami. I'm a lasagna hog!
    [p:18259][t:3191]: No lemons, no melon.
    [p:18259][t:3199]: Step on no pets.
    [p:18259][t:3199]: Yawn! Madonna fan? No damn way!
    [p:18259][t:3149]: Step on no pets.
    [p:18259][t:3149]: Able was I ere I saw Elba.
    [p:18259][t:3157]: Step on no pets.
    [p:18259][t:3157]: No lemons, no melon.
    [p:18259][t:3157]: A man, a plan, a canal: Panama!
    [p:18259][t:3157]: Was it a rat I saw?
    Joining thread 1
    Joining thread 2
    Joining thread 3
    Joining thread 4
    [p:18259][t:3149]: Go hang a salami. I'm a lasagna hog!
    [p:18259][t:3149]: Step on no pets.
    Joining thread 5
    Joining thread 6
    Joining thread 7
    Done waiting on threads.