5

我正在开发一个包含 DLL 的 Dot Net 项目。此 DLL 使用 .lib(C 代码)。不幸的是,这个.lib 中有很多静态变量。我在这里遇到的问题:

如果两个用户同时执行搜索,我会收到一个错误,因为他们都访问 .lib,其中一个更改了某些内容,而另一个尝试读取数据。

显而易见的解决方案是锁定访问权限,但我真的不想这样做,因为这会大大减慢搜索过程。我宁愿尝试从 lib 中创建一个 DLL,但我不知道这是否会解决问题,因为我不知道静态变量是否会被单独存储,或者两个搜索进程是否会访问相同的变量。

有人对此有经验吗?因为这样做需要相当长的时间,而且我想在开始这样做之前知道它是否有效。

我希望一切都可以理解,因为英语不是我的第一语言,而且我的编程技能非常基础。

4

1 回答 1

1

据我了解,当您使用此 .dll 中的现有类从中读取数据时,您将无法同时编辑数据。显然,无论您在做什么花哨的东西,这都行不通。

您可以做的是创建一个Thunking Layer。这将是一种将被调用的包装类,而不是 .dll。此类将通过保存数据的本地副本以供读取,并允许对真实数据进行同步编辑,在这些操作完成时更新本地副本(使用适当的临时锁定等)来处理并发 I/O 请求。可能还有其他我不知道的标准方法,但这就是我要开始的方式。

我希望这有帮助。

于 2012-08-28T08:33:14.310 回答