Что вы имеете в виду Ruby on Rails не является потокобезопасным? - PullRequest
6 голосов
/ 03 февраля 2009

Я просто читал о ROR (еще не углубился в это), и я слышал, что он не безопасен для потоков Очевидно, это не означает, что более одного человека не могут получить доступ к вашему сайту одновременно, так что именно это означает? Где темы вступают в игру в ROR? Они просто означают обработку запроса?

Ответы [ 3 ]

28 голосов
/ 03 февраля 2009

Ваша информация устарела. Это потокобезопасное с 2.2.2

Имейте в виду, Ruby MRI 1.8.x , наиболее широко используемая реализация Ruby использует Green Threads , поэтому при использовании 1.8.x при создании 100 потоков все они работают на тот же процессор. Поэтому при размещении веб-сайтов Rails с использованием MRI вы, вероятно, захотите запустить столько экземпляров Ruby, сколько у вас CPUS. Такие вещи как пассажир позаботятся об этом за вас.

Раньше это было большой проблемой для JRuby , потому что у JRuby есть нативные потоки, а процессы жонглирования кажутся излишними. Во всяком случае, его разобрались сейчас.

Помимо этого, Iron Ruby, интерпретатор .Net Ruby запускает собственные потоки.

Примечание. Ruby 1.9.1 использует собственные потоки, но глобальная блокировка интерпретатора все еще сохраняется.

4 голосов
/ 03 февраля 2009

По сути, это говорит о том, что вы не можете иметь несколько копий рельсов, запущенных в одном и том же процессе в разных потоках, потому что некоторые ресурсы могут просочиться между потоками, непреднамеренно вызывая странное поведение, например объекты, которые кажутся изменяющимися исчезают в случайное время.

Кроме того, это также может быть случай, когда классы не разработаны с какой-либо встроенной в них синхронизацией, что затрудняет размещение частей рельсов в потоки и позволяет другим частям делиться между потоками.

0 голосов
/ 29 июля 2009

Стоит отметить, что Ruby MRI 1.8.x использует Green Threads, но Ruby MRI 2 будет иметь собственные потоки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...