老马版主请教一个关于进程通信问题
老马好,请教一个问题。我想实现这么一个功能:
用一个主进程分发任务,而使用子进程来干事情(子进程的个数可能为多个)。。所以自然想到进程通信的问题了
用了内存共享的方法,但是存在这么一个问题,就是子进程往共享内存写入任务时,这个时候可能出现多个子进程都把这个任务给取走
所以我就想如果类似于asp中的application操作,操作前 lock一下,操作完毕 unlock 那就很好。可是弄了下内存的锁定与解锁,可惜没有成功
网上搜到你的大帖
“http://www.m5home.com/blog2/blogview.asp?logID=363&cateID=2 用的是广播消息+子类化取回消息,再封装为一个类,实现逻辑层面的事件触发式工作过程,自我感觉使用上方便.....”
可惜上述地址无法下载。老马多加指导。
ps: 今天发现老马原来有个网站。论坛。。。。马上注册了个。。。:P 包里的EXE运行两份,然后在Text2里输入字符,回车,就可以看到效果了.
代码在这里:
http://www.m5home.com/blog2/attachments/month_0706/32007620152127.rar
还有另一种方案,利用COM进行共享,也是事件机制,代码还简单得多
等下给你发上来,现在上班..... 好的
多谢老马
利用COM进行共享,是指利用actieve exe吗
老马周末还在上班啊 辛苦辛苦 对了 那个压缩包中有个 tlb 文件如何注册呢,程序无法运行
一般见 tlb 不需要注册的呀 。。
晚上要晚点再来啦 确实是ActiveX EXE,老魏那里拿到的.
你看看吧,这个比较方便.
对了 那个压缩包中有个 tlb 文件如何注册呢,程序无法运行
一般见 tlb 不需要注册的呀 。。
晚上要晚点 ...
hfcas 发表于 2010-8-7 19:04 http://www.m5home.com/bbs/images/common/back.gif
要在工程里引用一下......不知道为什么,有点怪
下班了,闪人....... 要在工程里引用一下......不知道为什么,有点怪
下班了,闪人.......
马大哈 发表于 2010-8-7 19:25 http://www.m5home.com/bbs/images/common/back.gif
我已经在工程里引用了 运行调试时 提示 未注册 ,无法运行呢 回复 7# hfcas
注册TLB要用这个代码:
http://www.m5home.com/blog2/attachments/month_0706/y2007620163052.rar
不过我还是建议你使用ActiveX EXE吧,事件机制比较方便.
另外,上面的那个共享内存通讯的代码其实也可以不要那个TLB,只不过需要自己构造一个内存中的结构,你得自己改改了.
反正就是字节复制,只需要知道地址与长度即可.
我使用TLB是为了偷懒......没想到还有注册问题,汗死. 进程通信请参考陈辉的博客 但用actieve x 有这么个问题
当activexe中处理耗资源的东西时 会导致主程序失去响应。。。
对这个 老马有好的方法没有呢 利用定时器让调用过程先返回.........微软的招......... 哈哈。。。反正很多时候不好办就用定时器的。。。 回复 hfcas 的帖子
微软自己的例子里也这样搞的呢...... 我现在遇到要多次打开运行一个程序(.exe),但是这多个进程间要共享一个数据。
试了老马的,以及5楼的,怎么运行例程生成的.exe,都没有反应? 我现在遇到要多次打开运行一个程序(.exe),但是这多个进程间要共享一个数据。
试了老马的,以及5楼的,怎么运行例程生成的.exe,都没有反应? 回复 wanren2008 的帖子
CSEC.exe运行一份,进程里能看见,它是ActiveX服务器.
工程1.EXE运行N份,它们是ActiveX客户端.
然后就可以正常测试了. 呵呵,终于明白了,是这么回事。
----------------------------------------------------------
那还有个问题:
实际应用是如何用?
把这个CSEC单独做个exe,在自己的程序中用Shell运行这个exe?
还是说把这些代码包含进我的代码,每次都怎么执行一下?
我看了下进程,不知道在进程里边进程名是啥? 回复 wanren2008 的帖子
ActiveX EXE你可以把它当成一个DLL使用,只不过是进程外的.
首次在机器上运行时,需要注册一下,方法是:
app.exe /RegServer '注册
反注册时:
app.exe /UnRegServer '反注册
然后就可以像普通DLL那样创建对象再实例化啥的了.
页:
[1]