Elysia, you mentioned that a busy loop is a bad idea. I don't disagree, but what do you recommend in a situation where the main thread spawns a large number of worker threads, and you need to wait for them all to complete before continuing in the main thread? it seems to me that some sort of loop that checks the threads to see if they are finished is exactly what is needed. sure, you could call pthread_join() (or its equivalent in whatever thread implementation you're using) on all of them, but if you need the main thread display the progress of the operation on the console, a loop would be about the only way to make that happen.