我有一个被加载到多个进程的dll。在这些进程/ dll之间进行通信的一种干净方法是什么。目标是发送简单的字符串。我宁愿避免sendmessage,文件io和发送string命令的地址。
我会调查shared memory。 MSDN上有一个不错的example。
请记住,就像在同一进程中使用线程时一样,对共享内存的访问不会序列化。您需要某种形式的同步(例如,命名的互斥锁)来序列化对存储块的访问。
我假设您正在为Windows编码。
如果管道之间的通信是点对点的,命名管道可能是最好的解决方案。您可以轻松设计客户端/服务器风格的协议,例如:
客户端:这是要处理的数据
服务器:这是处理您的请求的结果
命名管道也将轻松移植到其他点对点机制,例如套接字或匿名管道。
如果您的通信不是点对点的,并且您需要在多个进程之间维护公用的共享数据,那么Andre建议的内存映射文件是一个更好的选择,但肯定需要互斥保护才能可靠。] >
由于其他所有人都认为Windows,我可以承担UcOs / II吗?使用消息邮箱。好吧,我想如果您在Windows上,必须要有类似的内容才能快速打开Google Mailslots。
Microsoft对进程间通信的不同方法有相当全面的概述。