dsm*_*dsm 3 perl multithreading fork signals
我在perl中有一个多线程应用程序,我必须依赖几个非线程安全模块,所以我一直使用fork()带有kill()信号的ed进程作为消息传递接口.
问题是信号处理程序有点不稳定(至少可以说)并且经常最终导致在不适当的状态下被杀死的进程.
有一个更好的方法吗?
您始终可以在父级和子级之间使用管道来回传递消息.
pipe my $reader, my $writer;
my $pid = fork();
if ( $pid == 0 ) {
close $reader;
...
}
else {
close $writer;
my $msg_from_child = <$reader>;
....
}
Run Code Online (Sandbox Code Playgroud)
不是一种非常舒适的编程方式,但它不应该是"不稳定的".