通过调用共享DLL在两个线程之间进行信息交换

时间:2011-02-06 23:02:48

标签: c multithreading dll synchronization

如果这两个线程正在调用共享DLL库,您可以在两个线程之间创建“对话”(或信息交换)吗?并且,如果可以进行此对话,那么在线程之间实际发生的要求或限制是什么?

这个问题是我们的教授给我们的。我只能根据问题的上下文假设我的教授指的是两个线程之间需要同步才能使对话成功,或者限制DLL链接类型(隐式或显式)。

然后,假设与否,我在这里不知所措:)

P.S。 - 在这种情况下,我们用C编程。

提前感谢您的帮助:)

3 个答案:

答案 0 :(得分:1)

看来你的教授正在测试你对加载到什么空间DLL的理解,以及它与线程的关系。

如果没有为您做功课,我建议您考虑如果两个线程在特定DLL上调用LoadLibrary()会发生什么。 DLL是否两次加载到进程中?

鉴于上述结果,这对于调用该DLL的两个线程有​​什么影响?

答案 1 :(得分:0)

您是否考虑过使用Boost.Interprocess,因为C ++有许多隐式分配。通常,您需要一个系统范围的互斥锁,以便同步对该部分内存的访问。

答案 2 :(得分:0)

我认为给每个线程调用LoadLibrary()系统会为每个DLL分配不同的内存段,因此每个线程都没有共同的资源可以使用,因此它们将无法交换任何信息。

...但 假设我们将使用#Pragam Comment(lib, "myDLL.lib")显式链接到DLL 我认为通过这种方式,您将能够在线程之间共享资源,因为DLL在程序启动时已完全加载。

杰夫? ..这是对的吗?...