作者TONICOM (TONICOM)
看板Perl
标题[问题] Win32环境下的行程通讯
时间Sun Nov 8 21:31:08 2009
请教一下各位前辈 :
小弟最近在IPC上遇到了一些难题 , 或者说是在Win32环境下的IPC .
程式的需求是如此 :
PROC_A 会呼叫 PROC_B , 之後PROC_A会在那里等待PROC_B的讯息.
我目前是将双方要沟通的讯息以档案的方式解决 , 但是这似乎不是很理想 .
另外PROC_A在等待时 , 我是利用无穷回圈不断的去侦查档案是否被改变 , 但这也似乎不理想.
虽然已经可以成功执行 , 但是我希望能利用一些技巧来加快效率 , 所以我自行分析一下需求 :
1. PROC_A 只需要等待 PROC_B send 的 Signal , 再去抓取资料
2. 双方的资料希望是在一个share memory
当然我不会放过CPAN , Perl提供的IPC种类很多 , 但是很可惜 , 大多不support Win32.
唯一找到的Win32::MMF , 却老是无法编译成功 .我也尝试过%SIG和kill搭配 , 但是效果和Unix似乎不一样.
想请教各位先进 , 关於win32底下的IPC , 有甚麽建议吗 ? 如果能推荐几个模组给小弟参考, 更是感激不尽!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.37.102.246
1F:推 herculus6502:我最近在看POE,号称有现成的模组,不过学习曲线… 11/09 06:50
2F:→ herculus6502:为了scalability一开始我都先用socket,本机再开档案 11/09 06:52
3F:→ herculus6502:以前用c的话是用namedpipe+waitforsingleobject 11/09 06:53
4F:→ TONICOM:Share Memory 解决了,利用 Memory Mapped File Service. 11/09 14:02
5F:→ TONICOM:剩下如何利用讯号来trigger行程 11/09 14:03
6F:→ clkao:AnyEvent is your friend 11/09 17:24
7F:→ TONICOM:感谢分享,我大盖看了一下,确实符合需求,而且比我想像中还 11/10 13:30
8F:→ TONICOM:多!!要来好好研究一下了 11/10 13:31
9F:推 herculus6502:"You should avoid POE like the plague"..我笑了^_^ 11/10 15:48
10F:→ herculus6502:不过我看了一下AnyEvent::Socket,感觉比POE简单多了 11/10 16:01
11F:→ herculus6502:有DELPHI的INDY的味道…不愧是clkao...Orz 11/10 16:03
12F:→ TONICOM:关於Win32下的Signal , 我找到了一些资讯 : 11/11 11:33
13F:→ TONICOM:On Windows, Perl basically does not support signals at 11/11 11:33
14F:→ TONICOM: all, because Windows has no signals. 11/11 11:33
15F:→ TONICOM:原因 : Signals are unsupported by the Win32 API. The C 11/11 11:34
16F:→ TONICOM: Runtime provides crude support for signals, but there 11/11 11:35
17F:→ TONICOM:are serious caveats, such as inability to die() or 11/11 11:36
18F:→ TONICOM: exit() from a signal handler. Perl itself does not 11/11 11:36
19F:→ TONICOM:guarantee that signal handlers will not interrupt 11/11 11:37
20F:→ TONICOM:critical operations such as memory allocation, which 11/11 11:37
21F:→ TONICOM: means signal invocation may throw perl internals into 11/11 11:38
22F:→ TONICOM:disarray. For these reasons, signals are unsupported 11/11 11:39
23F:→ TONICOM: at this time. 11/11 11:39
24F:→ TONICOM:原因是撷取自ActivePerl网站 11/11 11:41