我想与多个过程共享一个数据。我的第一个尝试是使用 点消息队列队列 自从我读到P2P MSG队列非常快的情况下,有多个读者。

在我的测试中,似乎有多个读者正在从同一队列中阅读,一旦一位读者获取了一条消息,其他读者将无法获取相同的消息。

将数据共享到多个流程的更好的IPC是什么?数据经常更新(每秒多次),因此我认为WM_CopyData不是一个不错的选择,并且会干扰“正常”消息队列。

我的第二次尝试可能是共享内存 +静音 +事件

有帮助吗?

解决方案

点对点队列可以正常工作。是的,当您发送时,只有一个接收器会收到消息 发件人可以查询队列(通过调用 GetMsgqueueinfo)查看有多少个听众(WNUMREEDERS的成员 msgqueueinfo)有,只是重复该次数的消息。

其他提示

最后,对于多个线程或过程,打开同一队列以读取访问或写入访问是完全有效的。点对点消息队列支持多个读者和多个作家。例如,这种做法允许一个作者流程将消息发送到多个客户端进程或多个作者流程,以将消息发送到单个读取器过程。但是,没有办法向特定的读者流程讲话。当过程或线程读取队列时,它将读取下一条可用消息。也无法向多个读者广播消息。

编程Windows嵌入式CE 6.0开发人员参考,第四版,道格拉斯沸腾,第304页

尽管有警告,但Ctacke的IDE似乎对我的用例来说还不错。

警告:
我的队列读者需要 Sleep(10) 他们获取信息的份额之后,允许其他读者去获取消息。没有 Sleep(), ,从等待中只有一个读者过程。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top