在我的程序中,我使用以下方式处理新的线程:
pthread_t thread;
pthread_create(&thread, NULL,
c->someFunction, (void *) fd); //where fd is ID of the thread
这个问题非常简单 - 如果我只是让someFunction
运行完,那么在C++
中是否需要调用某些东西,例如join
或其他任何方法,以避免内存泄漏
还是内存会自动释放?
join
用于加入线程(如果在主函数中对某个线程进行加入,主函数将等待直到该线程终止并释放其资源)。join
和detach
用于不同的目的。但它们都会释放资源。detach
不能用于终止线程,线程将自行终止。当线程处于“分离状态”时,意味着没有人等待该线程终止(就像在使用join
时,有人等待该线程终止以便可以加入)。 - Suvarna Pattayilpthread_detach()
并不会释放任何资源或终止任何内容。它只是配置线程,在最终结束时释放其所有资源。 - alk