I’m using pthreads that don’t allocate any local variables. For reasons I won’t go into here, I need a pthread_cancel() option, and the threads I’m writing should be able to support it (no resources to clean up, OK to stop execution at any point). At the moment, I have a problem because pthread_cancel returns before the pthread is actually finished running, causing problems for shared resources I want to touch only after thread cancellation.
Is there any way I can know when my pthread has well and truly concluded? Is there perhaps a function for this I haven’t found, or a parameter I’m not familiar with?
Would
pthread_cancel(thread_handle);
pthread_join(thread_handle, NULL);
do the trick, or is that not guaranteed (since thread_handle may already be invalid)?
I’m pretty new to pthreads, so best practices welcome (beyond “don’t use pthread_cancel(),” which I’ve already learned 😛 ).
The kernel.org manual page is actually doing it. It’s safe.