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 #1 | Run #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 #3 | Run #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. |