如果在Windows XP操作系统上运行父线程的子线程,那么终止父线程是否也会终止其子线程?
答案 0 :(得分:5)
在记录信息方面,Windows中没有“父线程”这样的东西。甚至没有严格的“父进程”概念 - Windows不记录创建者进程,只记录继承属性和句柄的进程。所以答案是否定的。
编辑:一个例子应该说清楚:你可以在另一个进程中创建一个线程,而不仅仅是你自己的。显然,当线程终止时,线程不会终止。
答案 1 :(得分:1)
否 - 线程属于进程,而不属于其他线程。如果创建它们的线程终止,则线程不会终止。
线程在以下时间终止:
答案 2 :(得分:0)
不,除非父线程是应用程序的主线程。
答案 3 :(得分:0)
来自CreateThread()窗口API函数的MSDN描述:
“线程对象保留在系统中,直到线程终止,并且通过调用CloseHandle关闭了它的所有句柄。”
我对CreateThread如何工作的理解是,你基本上要求Windows生成一个线程,并为你希望线程调用的函数分配一个指针。当过程完成后,您“礼貌地”告诉窗口您不再需要该线程。
所以,我猜这一切都取决于应用程序的编写方式。使用为线程提供包装器的有用的开发语言将消除许多不确定性,特别是如果通过对象提供线程并在应用程序终止时适当地收集垃圾。
就操作系统而言,我同意“wj32”本身确实没有主线程,但我认为应用程序线程本身可以在概念上被视为“主线程”,前提是应用程序适当地管理线程资源分配。