我使用C#(MS visual studio 2010)来模拟生产者 - 消费者问题。我有2个exe程序,一个是Producer,另一个是Consumer。当它们执行时,Producer会将100个整数插入到队列中,而Consumer会以有序的方式将它们从该队列中删除。
我的问题是如何在两个进程之间使用共享队列,如果我必须使用进程间通信来传递一些小消息,我应该使用哪种机制(在剪贴板,COM,数据拷贝,DDE,文件中)映射,Mailslots,管道,RPC,Windows套接字)?
非常感谢!
答案 0 :(得分:0)
我只想使用消息排队技术,例如MSMQ。仔细研究它是否符合您的要求。您可以在NServiceBus旁边使用它,它可以为您提供现成的完整发布/订阅模型,而且相对容易使用。
答案 1 :(得分:0)
我想到的另一个选择是在同一时间在多个读/写之间使用带有并发控制的数据库事务表。
答案 2 :(得分:0)
如果将两个进程转换为同一进程中的线程会更容易,因此它们可以直接共享内存。
除此之外,您可以使用内存映射I / O在进程和命名的互斥锁之间建立共享内存区域,以确保只有一个线程一次访问它。您必须在原始指针上编写自己的队列,这很容易出错。
即使在这种情况下,队列也可能无锁,但这很难实现,而且可能不值得。