2010-02-17 24 views
1

我有一个关于mod_passenger和Singleton类的问题(rails 2.3.5和ruby 1.9.1)。mod_passenger,线程和单例类

在我的应用程序中,我有一个实现线程池(线程安全)的Singleton类。

此外还有控制器管理所有线程(杀死并启动它们)。该控制器使用先前的单例类来对线程执行操作。

在本地,使用带有config.cache_classes = true的WEBrick它的工作原理是正确的。在生产中,使用mod_passenger(也是config.cache_classes = true),它不起作用:线程不会被终止。但是,如果我使用控制台(生产环境)中的单例类,则它工作正常。

可能是mod_passenger的问题?有小费吗?

谢谢。

回答

1

这是因为mod_passenger产生了多次应用程序,所以singleton类线程池在多个控制器调用之间不一致,因为每个实例都有自己的线程池。

我解决了使用脚本/运行器运行单例类线程池的问题,并使用数据库表与所有应用程序实例通信。我使用这张表来发送线程池必须完成的任务。

+0

你能分享你的知识如何使用脚本/跑步者? – Paul 2014-10-14 10:53:35