我有一个生成两个线程的进程。我想知道哪个线程最先完成,哪个线程最后完成。我是 C 编程和 Pthreads 的新手。 我已经浏览了“pthread_join”的文档,但不确定如何使用它。
最佳答案
有两种方法可以做到这一点。一种很简单,但要求线程不调用pthread_exit
。另一个更复杂,但支持线程可能调用 pthread_exit
的用例。
在这两种情况下,您都需要一些函数来报告线程的终止。编写起来应该非常简单——获取互斥锁,使用有关哪个线程终止以及何时终止的信息更新一些共享结构,然后释放互斥锁。
简单的方法:构造线程时,向其传递一个包装函数,该函数在常规线程函数返回后调用终止报告函数。
复杂方法:使用pthread_key_create
创建一个TSD key ,其析构函数报告线程终止。当您构造线程时,向其传递一个包装函数。包装函数应创建 TSD 数据的实例,其析构函数报告线程终止。
我假设您确实想要/需要做您所说的想做的事情。很可能有更好的方法来解决您实际的外部问题,但您没有告诉我们问题是什么。
关于c - 跟踪 Pthread 完成的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35137958/