Я время от времени взламывал Ruby, но я не делал ничего большого или многопоточного с ним. Я слышал, что MRI поддерживает только зеленые потоки, а JRuby поддерживает собственные потоки через JVM. Однако я натыкаюсь на комментарии к блогам и дискуссионным группам, в которых говорится, что "Rails не является потокобезопасным" или что сам Ruby не является потокобезопасным. Например, кто-то прокомментировал, что существует проблема с требованием. Это звучит немного фундаментально.
Я видел много приложений Java, которые не обрабатывают concurrency правильно, и время от времени у меня возникают кошмары:-) Но по крайней мере вы можете писать потокобезопасные приложения на Java, если вы действительно знаете, что вы делаете (это просто нелегко).
Все это звучит довольно тревожно, может кто-то еще разобраться - в чем проблема и как Rails вообще удается работать, если это так? Могу ли я написать многопоточный код Ruby, который работает корректно без условий гонки и тупиков? Является ли он переносимым между JRuby и MRI или мне нужно взломать специальный код JVM, чтобы правильно использовать собственные потоки JVM?
EDIT:
Я должен был задать два вопроса, потому что люди, похоже, только отвечают на поток рельсов (который сам по себе хорош) и зеленая резьба против собственной потоковой передачи. Мои проблемы с основными проблемами Ruby в отношении безопасности потоков на самом деле не решены. Кажется, существует хотя бы (нерешенный?) вопрос с требованием в некоторых случаях.