gpt4 book ai didi

c# - 如果一个应用程序中的多个线程调用单个 DLL 会发生什么

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:57:58 25 4
gpt4 key购买 nike

我想知道当一个应用程序中的三个线程(几乎)同时从 DLL 调用一个静态方法时会发生什么。是否为每个线程加载了 3 个 DLL 实例,或者其他线程是否仅在第一个线程使用 DLL 静态方法完成后才能访问 DLL(即,每个线程在轮到它时都可以访问 DLL?

最佳答案

Are there 3 instances of the DLL loaded, one for each thread?

没有。 DLL 通常每个进程加载一次。 (这里有一些微妙的问题;如果您使用 LoadLoadFrom,同一个程序集可能会被加载两次。但这种情况很少见,并且没有任何影响与线程有关。)

Do the second and third threads only get access to the DLL once the first thread is done with the DLL static method?

没有;静态方法不会自动序列化。如果您需要一种方法来确保一次只有一个线程访问它,那么您将不得不自己编写代码来执行此操作。

静态构造函数 确实有点像那样。运行时将确保“赢得比赛”的线程将运行静态构造函数。其他线程将等待第一个线程完成 cctor。有关详细信息,请阅读我最近的系列文章。

http://ericlippert.com/tag/static-constructors/

关于c# - 如果一个应用程序中的多个线程调用单个 DLL 会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15101150/

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