Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多处理和共享库锁_C#_Multithreading_Process_Shared Libraries_Gdal - Fatal编程技术网

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的关键部分相互锁定吗?