gpt4 book ai didi

asp.net - 线程、线程池和 Unity 的 ThreadScope

转载 作者:行者123 更新时间:2023-12-02 03:33:42 29 4
gpt4 key购买 nike

我有一个关于线程、ASP.net 的线程池和 Unity 的 Thread Scope 对象范围的问题。据我了解,每个对 ASP.net 站点的请求都有自己的线程,当请求完成时,线程返回到线程池。对吗?

如果这是真的,那么这对 Unity 中线程作用域的使用有何影响?如果我们使用它并且线程最终回到线程池中,那么 Unity 对象是否会保留下来?当线程发送到池中时,线程是否对其变量进行垃圾收集?它必须做类似的事情,因为它处理不同的请求。

我想我的问题是,线程垃圾回收的具体时间是什么时候?

Unity Object Scope Definitions

最佳答案

请注意,.NET Thread 对象与其代表的线程不同。后者是一个操作系统概念,即使 .NET 线程已从 Windows 线程中抽象出来,您也可以假设 .NET 线程具有从 Windows 线程执行代码的能力,除非您处于异国情调的环境中。

I guess my question is, when exactly are threads garbage collected?

Thread 对象只能在相关线程终止且 Thread 不再可从任何 GC 根访问时被垃圾收集。 .NET 线程池中的 Thread 对象只要在线程池中,就不会被垃圾回收。

如果您在 Unity 中使用 PerThreadLifetimeManager,那么每个线程都会有一个单独的实例。从同一线程调用 Resolve 将返回相同的实例,但从不同线程调用 Resolve 将返回不同的实例。

请注意,当关联线程终止时,PerThreadLifetimeManager 不会释放任何实例。

如果您在 ASP.NET 代码中使用 async 和 await,则单个请求可能会被多个线程处理。

PerThreadLifetimeManager 建立在线程本地存储之上,可用于提高多线程代码的性能。然而,线程本地存储常常令人困惑,在我看来,除非确实有必要,否则不应使用。

关于asp.net - 线程、线程池和 Unity 的 ThreadScope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25081009/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com