我有一个产生两个线程的进程。我想知道哪个线程首先完成,哪个线程最后完成。我是C编程和Pthreads的新手。 我已经阅读了'pthread_join'的文档但不确定如何使用它。
答案 0 :(得分:2)
有两种方法可以做到这一点。一个很简单,但要求线程不要调用pthread_exit
。另一个更复杂,但支持线程可以调用pthread_exit
的用例。
在这两种情况下,您都需要一些报告线程终止的功能。这应该非常简单 - 获取互斥锁,使用有关哪个线程终止的信息和何时更新某些共享结构,然后释放互斥锁。
简单方法:构造线程时,传递一个包装函数,在常规线程函数返回后调用终止报告函数。
复杂方法:使用pthread_key_create
创建一个TSD密钥,其析构函数报告线程终止。构造线程时,传递一个包装函数。包装器函数应该创建一个TSD数据的实例,其析构函数报告线程终止。
我假设你真的想要/需要做你想说的事情。最有可能解决您的实际外部问题的方法更好,但您没有告诉我们这个问题是什么。