上下之间拖了好几天。。我觉得以后我做事情,都应该尽量把事情收个结尾,否则这次放下的事情,就不知道什么时候才能再拾起来。。即使勉强拾起来了。也是显得文不答意,失去了本来的目的。。
开始本来以为除了上面四种方式之外,应该没有什么好用的进程见通信方式了。。可刚才我翻了翻资料,发现我错了。至少有三种常用,或者是曾经常用的方式,我没有列入其中:SIGINT方式。。邮槽。。还有DCOM通信模式。。
SIGINT属于比较早的版本。。在MSDN里面明确说明,在所有WIN32系统中已经不被支持。据说在16位系统中常用。我猜测使用方法应该类似与共享内存,但应该比共享内存要简单一些。
邮槽类似与命名管道。但是操作起来要简单的多,缺点是无法进行双工通信,通信方式为同步通信,貌似无法进行异步处理。这个我以前也是从来没有用过,在使用的时候没有想到无法双工这一回事。愣是以为我的代码哪里有问题。调试了很久才反应过来。
DCOM通信我没有代码实现。。很早就知道COM/DCOM这东西功能有点强大。但无奈我没有写过DCOM组件。一开始还真的不知道如何下手。好在我最近正在找一种应用层监控进程的办法,貌似会用到COM。等做完这一个东西,也许会回来考虑这个DCOM进程间通信的小问题。。不晓得这算不算懈怠。
我眼中的完美线程间通信:
1、双方都无需等待。当一方有消息产生时会自动通知另一方来接收。
2、数据通信过程为瞬传过程。即无需人为的循环等待另一方返回。
3、保证数据传输质量。
可惜,上面所列的所有通信方式,貌似没有一种方式能够做到。我想的另一种方式:在共享内存里面放置一块函数体。两个进程同时将这个函数体映射入自身内存。由这个函数体来完成进程间通信的方式。但是在试验中,才发现,这种方式在数据访问,还有同步的问题上。存在很大的问题。。无奈鄙视一下自己的无知。。先把问题放在一边。等待哪天开窍了,再返回来考虑罢。。。。