我已经使用pthread_detach来释放分配给子线程的堆栈,但这不起作用,我猜它不会释放内存.....
我不想使用pthread_join。我知道加入让我保证为孩子释放堆栈,但是,我不希望父级挂起,直到子线程终止,我希望我的父母同时做一些其他的工作。所以,我使用了detach,因为它不会阻塞父线程。
请帮帮我。我被卡住了..
答案 0 :(得分:1)
YES - 根据http://cursuri.cs.pub.ro/~apc/2003/resources/pthreads/uguide/users-16.htm,它会在线程结束时释放内存,或者如果线程已经结束则立即释放内存...
由于你没有提供任何线索,因为你如何确定内存没有被释放,我只能假设你用来确定它的方法是不够的......
答案 1 :(得分:1)
这不起作用
是的是。您可能会错误地解释您的观察结果。
我希望我的父母同时做一些其他的工作
这通常是首先创建线程的原因,而你可以这样做:
pthread_create(...);
do_some_work(); // both current and new threads work in parallel
pthread_join(...); // wait for both threads to finish
report_results();
我不想使用pthread_join。我知道加入让我保证为孩子释放堆栈
以上陈述是错误的:它确保没有这样的事情。一个常见的实现将缓存现在可用的子堆栈以供重用(如果您将很快创建另一个线程)。