【发布时间】:2020-06-10 11:04:23
【问题描述】:
在 Win32 API 世界中,CreateThread() 用于创建线程,CloseHandle() 用于关闭线程句柄。但在 .NET 框架中,System.Threading.Thread 类没有 Dispose() 或 Close() 方法。我想知道,在 .NET 的情况下,操作系统线程什么时候会关闭?在垃圾收集期间?
【问题讨论】:
-
线程完成工作后会自动释放。
-
可以调用
Join等待线程完成 -
CloseHandle()不会破坏、终止或挂起线程,它只会破坏句柄本身。线程继续正常工作。在 .NET 中,Thread类派生自CriticalFinalizerObject,因此内部句柄将被终结器关闭。 -
你为什么要关心线程的句柄?
-
“操作系统线程何时关闭” - 您似乎很肯定 CLR 线程映射到操作系统线程。你验证了这个假设吗?
标签: c# multithreading winapi