通过ruby进程共享变量
发布时间:2020-12-17 03:37:00 所属栏目:百科 来源:网络整理
导读:我正在写一个gem,我必须分叉两个进程,这两个进程正在启动两个webrick服务器.我想通过基类中的类方法启动此服务器,因为应该只运行这两个服务器,而不是多个服务器.在运行时,我想在这两个服务器上调用一些方法来更改变量. 我的问题是,我无法通过基类的类方法访
我正在写一个gem,我必须分叉两个进程,这两个进程正在启动两个webrick服务器.我想通过基类中的类方法启动此服务器,因为应该只运行这两个服务器,而不是多个服务器.在运行时,我想在这两个服务器上调用一些方法来更改变量.
我的问题是,我无法通过基类的类方法访问forks的实例变量.此外,我不能在我的基类中使用线程,因为我在使用另一个非线程安全的库.所以我必须将每个服务器分配到它自己的进程. 我尝试使用类变量,比如@@ server.但是当我尝试通过基类访问这些变量时,它是零.我读过在Ruby中不可能在forks中共享类变量,我是对的吗? 那么,还有其他方法吗?我想过使用单身,但我不确定这是不是最好的主意. 解决方法
当您分叉进程时,子进程和父进程的内存是分开的,因此您不能直接在它们之间共享变量.因此,单例类不适用于您的情况.
解决方案是IPC,Ruby支持pipes和sockets,它们是两种最常用的IPC形式,至少在* NIX上.如果您需要更透明的界面,Ruby也支持distributed objects. 你选择什么取决于工作.如果您知道要在某些时候在多台计算机上拆分进程,请使用套接字或drb.如果没有管道. Here’s a short introduction to pipes in Ruby (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |