new操作符或构造函数是否会阻塞.net中的其他线程?

本文关键字:net 其他 线程 操作符 构造函数 是否 new | 更新日期: 2023-09-27 18:18:59

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

编辑:

在调查之后,我发现,锁的发生是因为来自另一个请求的DB调用(我运行了一个ASP。网络应用程序)。

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

new操作符或构造函数是否会阻塞.net中的其他线程?

不,它没有。这个特定的构造函数可能会做一些导致其他线程阻塞的事情,但是调用构造函数的行为本身并不会阻塞所有其他线程。

您可能注意到的一件事是,垃圾收集器在运行时确实需要阻塞所有线程的执行。如果您有一个线程正在分配大量的对象,以至于它导致的GC收集比期望的要多,那么您可能会阻塞线程一段明显的时间。

一切都取决于具体的上下文。构造函数只是另一种方法,具有为实例构造(分配内存)的特殊职责。你可以在里面构造对象构造函数内部的另一个线程或块线程,但它与构造函数本身无关。阻塞是关于程序的