【发布时间】:2009-12-08 22:36:16
【问题描述】:
据充分证明,当 .NET 的自动垃圾收集器运行时,它会暂时暂停与应用程序域关联的所有正在运行的托管线程。我无法发现的是当垃圾收集发生时应用程序创建的本机线程会发生什么的详细信息(即使用_beginthreadex()而不是System.Threading.Thread())。他们是同样暂停了,还是左派在跑?
【问题讨论】:
标签: .net multithreading garbage-collection
据充分证明,当 .NET 的自动垃圾收集器运行时,它会暂时暂停与应用程序域关联的所有正在运行的托管线程。我无法发现的是当垃圾收集发生时应用程序创建的本机线程会发生什么的详细信息(即使用_beginthreadex()而不是System.Threading.Thread())。他们是同样暂停了,还是左派在跑?
【问题讨论】:
标签: .net multithreading garbage-collection
this 有帮助吗?
"GC 不会停止那些不是 运行托管代码。既然那些 线程不能接触 GC 反正堆,没必要 GC来配合他们。”
"如果线程在托管代码中,但 调用本机代码,它将 继续运行。如果会停止 它返回到托管代码。”
【讨论】:
gcroot<T> 和朋友呢?