我有几个简单的问题。如果我在C中创建一个新的子线程,在线程完成处理并终止后,请执行:
猜猜我的发布太快了。找到第二个问题的答案(供将来参考):http://www.ibm.com/developerworks/linux/library/l-memory-leaks/index.html?ca=drs-
另外我想提一下,操作系统符合POSIX标准。
谢谢, 尼哥
答案 0 :(得分:4)
正如您已经发现的那样,您的第一个问题的答案是“不”。这也适用于在堆上分配的对象。
进程中的线程之间没有父子关系,因此“父线程”毫无意义。但是,是的,线程可以在退出时返回一个值。线程顶层函数的原型是:
void *function(void *);
观察返回类型为void *
。线程可以返回指针(对任何你喜欢的东西)。任何其他等待返回线程使用pthread_join()
完成的线程将检索此返回值。
答案 1 :(得分:0)
当线程退出时,不会释放内存,文件句柄,互斥锁等资源。但是,当进程退出时会释放所有与进程相关的资源,其中包括所有这些类型的对象。