Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PUMA(使用多线程)和MRI/jruby的线程安全问题_Ruby_Concurrency_Jruby_Puma - Fatal编程技术网

PUMA(使用多线程)和MRI/jruby的线程安全问题

PUMA(使用多线程)和MRI/jruby的线程安全问题,ruby,concurrency,jruby,puma,Ruby,Concurrency,Jruby,Puma,我了解多线程环境中共享状态的基本关注点——即使在使用GIL/GVL的MRI时也是如此。但我很好奇,在考虑MRI+Puma和jruby+Puma(假设Puma配置为在这两种情况下都使用多线程)时,是否存在不同的关注点 另外,在上述情况下,涉及共享状态的关键部分是什么?对于那些从根本上来说不是请求驱动的程序(比如那些利用Puma这样的web服务器的程序),这有什么不同 感谢您的时间和考虑;如果您对这些主题的优秀资源有任何建议,我们将不胜感激。您是否已充分阅读?您是否可以对您的问题进行更好的定义?你是

我了解多线程环境中共享状态的基本关注点——即使在使用GIL/GVL的MRI时也是如此。但我很好奇,在考虑MRI+Puma和jruby+Puma(假设Puma配置为在这两种情况下都使用多线程)时,是否存在不同的关注点

另外,在上述情况下,涉及共享状态的关键部分是什么?对于那些从根本上来说不是请求驱动的程序(比如那些利用Puma这样的web服务器的程序),这有什么不同


感谢您的时间和考虑;如果您对这些主题的优秀资源有任何建议,我们将不胜感激。

您是否已充分阅读?您是否可以对您的问题进行更好的定义?你是在问MRI和JRuby的线程模型有何不同,还是你的问题更多地围绕着puma这样的服务器如何使用线程来处理并发性?在MRI和JRuby下如何处理线程安全性实际上没有任何区别。在某些情况下,您可以在MRI下“逃脱”错误代码,这在技术上是不安全的,但您可能永远看不到竞争条件,而在JRuby中,您会更频繁地看到竞争条件。但是线程安全代码和技术在这两个方面实际上是相同的。我不知道你所说的“基本上不是请求驱动的程序(比如那些利用Puma这样的web服务器的程序)”是什么意思——大多数web应用基本上是请求驱动的,Puma是用于web应用的。你是说WebSocket还是什么?