对于长期运行的流程,例如邮寄和发布到外部网站,是否可以使用Ruby Thread.new而不是像延迟作业或Resque这样的后台工作者?
答案 0 :(得分:1)
这取决于你的意思。 Ruby有一个全局解释器锁(大多数实现都是这样做的 - JRuby是一个例外),这意味着你不会使用Thread.new方法获得真正的并发。这并不意味着你根本没有获得任何并发性。这在多个地方进行了更深入的讨论:
延迟作业和Resque方法都涉及让一个或多个单独的进程执行长时间运行的操作。使用多个进程,您的rails应用程序和后台工作进程之间将具有真正的并发性,因为GIL根本不会妨碍。