我想知道,如果我们在没有 pthread_join 的情况下执行 pthread_create 会发生什么?
谁将“清理”“未加入”线程的所有记忆。
答案 0 :(得分:1)
当流程终止时,与流程关联的所有资源都将不复存在。 (这当然不包括进程创建的共享资源,如文件系统中的文件,共享内存段等)。在此之前,未连接的线程将继续消耗资源,可能会调用将来对{的调用{1}}甚至pthread_create
失败。
答案 1 :(得分:0)
如果在不使用pthread_join的情况下创建线程,那么当主线程完成执行时,main函数中创建的所有其他线程都将被停止,因此不会完成执行其中的整个语句。
查看Pthread_join
的文档。
它将使主线程挂起,直到生成的线程完成执行。
答案 2 :(得分:0)
好吧,假设它是一个不需要或尝试显式终止的应用程序生命周期线程,操作系统将在其进程终止时(在所有非平凡的操作系统上)执行此操作。