C#-C#如何实现进程之间的信号量的收发?
如A进程发送信号量至进程B,B接到信号量之后执行操作。C#如何实现这样的功能?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如A进程发送信号量至进程B,B接到信号量之后执行操作。C#如何实现这样的功能?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
两线程之间的信号量,可使用AutoResetEvent和ManualResetEvent类来实现,具体可参照这篇文章:http://blog.csdn.net/daiyueqiang/article/details/4978167
具体实现没什么可说,可参考:http://hi.baidu.com/luoyuonline/blog/item/cb878a0f1e4b5cec37d12208.html
对于操作系统而言,信号量是本地进程同步最高效的实现方案,“namepipe或者socket之类的都是太重了”,不知道“重”从哪个方面来说的,需要看namepipe和socket是怎么显示的,C#来说主要是看虚拟机是如何实现它们的。个人觉得从操作系统和协议本身来考虑“效率”、“可靠”性比较合适。
进程间通信可以选择操作系统提供的同步原语.
同步: ResetEvent (ManualReset , AutoReset), Seamphore, Mutex 等
也可以利用操作系统的通信方式,例如:
Message 消息处理机制,定义自定义的消息头和消息体
第三方消息队列,例如微软的MessageQueue
利用网络:
Socket, Named-Pipe, Remoting 等
利用内存或者文件共享数据,例如:
SharedMemory, File 等。
微软提供了一个例子框架有完整的实现,见:
http://www.codeproject.com/Articles/34073/Inter-Process-Communication-IPC-Introduction-and-S
http://1code.codeplex.com/wikipage?title=IRPC#x_x_Download