Я время от времени занимаюсь хакерством с Ruby, но я не делал ничего большого или многопотокового с ним. Я слышал, что MRI поддерживает только зеленые потоки, а JRuby поддерживает собственные потоки через JVM. Однако я натыкаюсь на комментарии к блогам и дискуссионным группам, в которых говорится, что «Rails не является потокобезопасным» или что сам Ruby не является потокобезопасным. Например, кто-то прокомментировал, что существует проблема с требованием. Это звучит немного фундаментально.Ruby/Rails thread safety
Я видел много Java приложений, которые не обрабатывают параллелизм должным образом, и у меня есть кошмары о них время от времени :-) Но, по крайней мере, вы можете записи поточно-приложений в Java, если вам действительно знаю, что вы делаете (это просто нелегко).
Это звучит довольно тревожно, может кто-то уточнить, что именно проблема и как Rails вообще удается работать, если это так? Могу ли я написать многопоточный код Ruby, который работает корректно без условий гонки и тупиков? Является ли он переносимым между JRuby и MRI или мне нужно взломать специальный код JVM, чтобы правильно использовать собственные потоки JVM?
EDIT:
я должен был спросить два вопроса, потому что люди, кажется, только отвечать на рельсы РЕЗЬБОНАРЕЗАНИЕ вещи (что приятно само по себе) и зеленый многопоточность против родной многопоточности. Мои проблемы с основными проблемами Ruby в отношении потока безопасности на самом деле не были рассмотрены. Кажется, существует хотя бы (неразрешенный?) issue с требованием в некоторых случаях.
Duplicate: http://stackoverflow.com/questions/129226/what-are-the-current-state-of-affairs-on-threading-concurrency-and-forked-proces/129331#129331 –