The return of the ghost

There is still a hidden problem. Let's do some more experimentation: let's write a third version of this program (let's call it ch14/pthreads3.c). In it, we say, what if the worker threads take longer to perform their work (than they are currently taking)? We can easily simulate this with a simple sleep(3) function, which is going to be introduced into the worker routine:

[...]void * worker(void *data){      long datum = (long)data;      printf("Worker thread #%ld running ...\n", datum);      sleep(3);      printf("#%ld: work done, exiting now\n", datum);      pthread_exit(NULL);}[...]

Let's try it out:

$ ./pthreads3 Worker thread #0 running ...Worker thread #1 running ...Worker thread #2 running ...[... All three threads sleep for 3s ...] ...

Get Hands-On System Programming with Linux now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.