这涉及到消息队列与共享内存在这种情况下的适用性或适用性:
问题1:在上述情况下,哪一种最适合?(I)讯息队列,(II)共用记忆体?
Q-2:使用共享内存在多个共享库之间强制同步的引用或链接?
发布于 2012-11-23 14:32:15
我想你对这个问题的理解是错误的:
您不需要具有您所提供的规范的共享内存。如果下列情况之一为真,则共享内存是有用的:
现在,您需要为您的代码选择一个协议来讨论它。我建议使用英特尔线程构建块(TBB,这将回答Q2)。它们为您想要实现的目标提供了不同层次的抽象,我不知道如何为您选择,不过,需要一些时间来阅读(长)文档。
发布于 2012-11-23 16:19:23
请注意,我只在最一般的意义上理解您的应用程序,我认为消息队列是一个不需要考虑的问题,只要您传递的消息是有界的,并且适合队列使用。
您似乎关心的两个主要问题是同步和异步性。(1) POSIX消息队列已内置队列同步。这是一个很大的头痛去除。(2)在Linux下,队列id mqd_t是一个文件描述符,这意味着它可以在select语句中使用。这就解决了异步问题。在主DLL中,您可以在mqd_t语句中加载所有队列的select描述符,并在DLL消息以一致、调试和理解的机制到达时处理它们。(3)与共享内存相比,与共享内存相比,您损失的效率微乎其微(对于大多数应用程序来说都是微乎其微),这不仅仅是由于msg队列使用相对容易,而且您的主应用程序DLL无论如何都要在网络I/O上花费相当长的时间等待服务器。
https://stackoverflow.com/questions/13528699
复制相似问题