C# 多处理和共享库锁
我的案例看起来有C# 多处理和共享库锁,c#,multithreading,process,shared-libraries,gdal,C#,Multithreading,Process,Shared Libraries,Gdal,我的案例看起来有Nworker异步运行。它们是从GUIapp启动的。它们都在做相同的事情,但针对不同的数据。他们使用GDAL库进行光栅操作。当我观察输出数据时(一些正在创建的png文件)。看起来他们正在一个接一个地创建文件(不是同时创建)。奇怪的是,我设置了处理器亲缘关系(每个进程都有自己的核心),但输出数据没有发生任何变化。我开始在网上阅读一些东西,我发现如果我有一个共享库(GDAL,在我的例子中),而不是将它编译为STA,它可以被这些进程单独锁定。。。有人能描述一下它是如何工作的吗?当一个工
N
worker异步运行。它们是从GUI
app启动的。它们都在做相同的事情,但针对不同的数据。他们使用GDAL
库进行光栅操作。当我观察输出数据时(一些正在创建的png
文件)。看起来他们正在一个接一个地创建文件(不是同时创建)。奇怪的是,我设置了处理器亲缘关系(每个进程都有自己的核心),但输出数据没有发生任何变化。我开始在网上阅读一些东西,我发现如果我有一个共享库(GDAL
,在我的例子中),而不是将它编译为STA
,它可以被这些进程单独锁定。。。有人能描述一下它是如何工作的吗?当一个工作进程想要执行某个方法时,我的lib真的被锁定了吗?非常清楚……你是说通过IE(或任何其他浏览器)上网会影响.NET应用程序的执行吗?不管怎样,直接问GDAL的人可能会更幸运。这不是一个关于GDAL如何工作的问题,但如果有人知道,那就好了。我想知道,如果lib被编译为STA并由多个进程使用(例如,它在静态方法上有一些锁,用于执行一些计算),那么它能使进程在lib的关键部分相互锁定吗?