【问题标题】:.NET Garbage Collection and Native Threads.NET 垃圾收集和本机线程
【发布时间】:2009-12-08 22:36:16
【问题描述】:

据充分证明,当 .NET 的自动垃圾收集器运行时,它会暂时暂停与应用程序域关联的所有正在运行的托管线程。我无法发现的是当垃圾收集发生时应用程序创建的本机线程会发生什么的详细信息(即使用_beginthreadex()而不是System.Threading.Thread())。他们是同样暂停了,还是左派在跑?

【问题讨论】:

  • 支持这个好问题。 (道具++)
  • 另请参阅 herehere

标签: .net multithreading garbage-collection


【解决方案1】:

this 有帮助吗?

"GC 不会停止那些不是 运行托管代码。既然那些 线程不能接触 GC 反正堆,没必要 GC来配合他们。”

"如果线程在托管代码中,但 调用本机代码,它将 继续运行。如果会停止 它返回到托管代码。”

【讨论】:

  • +1 不错的链接。非常有趣的东西。希望您不介意,我编辑了您的帖子以包含博客中的相关内容,以防它离线。
  • 这很有趣。为什么这些线程不能接触 GC 堆? gcroot<T> 和朋友呢?
  • 本机线程一旦使用托管代码,就会向垃圾收集器注册。所以当 GC 运行时,线程被挂起。只有当线程死亡时,它才会被取消注册。
猜你喜欢
  • 2011-10-15
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多