c# - 新的运算符或构造函数是否会阻止.NET中的其他线程?

标签 c# .net multithreading constructor new-operator

我想知道调用构造函数是否会阻止程序中的其他线程?我查看了并发报告,发现一个长线程阻塞了其他线程,并且它的堆栈中始终有一个构造函数。

编辑:

经过调查,我发现锁定是由于另一个请求(我运行了ASP.NET应用程序)引起的DB调用而发生的。

对于这个问题,正如我在article中发现的那样,内存分配不会阻塞线程,除非Servy指出了,除非调用了GC。

最佳答案

不,不是的。这个特定的构造函数可能会执行导致其他线程阻塞的操作,但是调用构造函数的行为本身并不会阻塞所有其他线程。

您可能会注意到的一件事是,垃圾收集器在运行时确实需要阻止所有线程的执行。如果您有一个线程在分配大量对象,以致导致GC收集超出期望的程度,则您可能在明显的时间内阻塞了线程。

关于c# - 新的运算符或构造函数是否会阻止.NET中的其他线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17173351/

相关文章:

c# - unity - 如何在序列化字段更改时更新对象?

c# - 文本分类从文本中提取标签

C# API 库和记录到 PowerShell 的 WriteVerbose()

java - 在 Java 中从多个线程读取(而不是修改)非线程安全的对象(如链表)是否安全?

java - 如何知道 Swing 中两个线程何时完成

c# - 将 ValueTuple 转换为 IEnumerable

c# - Protobuf-Net 空列表

C# 和 .NET 的关系

c# - 如何使用 Sharepoint Web 服务从 .NET 获取文档列表?

TCP 和服务器套接字中的 Java 线程