C中的Pthread_join?

时间:2014-06-04 23:53:10

标签: c binary pthreads binaryfiles pthread-join

我正在编写代码将文本保存到二进制文件,其中包括一个自动保存文本到二进制文件的函数,以及一个从二进制文件打印的函数,我需要合并pthread锁和加入。我们得到了

 pthread_mutext_t mutex;
 pthread_t autosavethread;

作为全局变量,虽然教师没有谈论pthread或互斥体究竟做了什么,所以我对此感到困惑。 另外,我知道每当更改或读取共享变量时我都需要使用锁(在我的情况下,它将是二进制文件)。但是在文件的最后我应该使用pthread_join,我不知道它做了什么或者应该在其中使用什么参数。我猜测mutex和autosavethread应该是关闭的,或类似的东西,但我不知道如何写它。任何人都可以帮助我更好地理解吗?

1 个答案:

答案 0 :(得分:0)

pthread有两种类型 - 可连接线程&分离的线程。 如果你想让一个线程只执行一个任务并在任务完成后离开,你需要分离的线程; 如果要在使用分配的作业完成该线程时与创建的线程进行通信,则必须使用可连接线程。基本上,当父母和父母需要时,它是必需的。它创建的线程需要在线程完成后进行通信。

谷歌非常需要调用pthread API以及可以传达的内容。

但我要提到的一件事是,对于可连接线程,您必须针对创建的线程显式调用pthread_join。否则,将会出现严重的内存泄漏。当可连接线程完成其任务时,线程似乎退出(在linux上,您可以检查/ proc / PID / task /文件夹,一旦线程完成,其下的条目将消失),但是为此分配的资源可连接线程,即堆栈,仍然存在于进程内存空间中。随着越来越多的可连接线程被创建并完成它们的任务,每个线程的堆栈都留在进程空间中,除非您显式调用pthread_join。希望有所帮助,甚至有点