Потокобезопасность Ruby/направляющих

При использовании 2 столбцов текст никогда не будет обернут вокруг изображения.

Вы должны поместить изображение и текст в один столбец и полностью заполнить его. Затем заверните текст и изображение в div и поместите их влево. Что-то в строке этого (код является примером и не проверен):

<div class="col-md-12">
   <div class="pull-left"><img src="YourImage.png"/></div>
   <div class="pull-left">Your text goes here......</div>
</div>

Возможно, вам понадобится некоторый запас на изображении, чтобы текст не прилипал к изображению

18
задан auramo 16 March 2009 в 07:49
поделиться

4 ответа

Прежде всего, Ruby 1.9 (новый официальный выпуск) теперь собственный компонент использования (ядро) потоки . Предыдущие версии Ruby использовали зеленые потоки. Для ответа на вопрос кратко, до 1,9, потоки обычно не использовались в приложениях Ruby, больших или маленьких точно, потому что они не особенно безопасны или надежны.

Это не особенно вызывает тревогу, потому что до версии 2.2 направляющие не предприняли попытки быть ориентированными на многопотоковое исполнение, и таким образом, мы обычно обрабатываем асинхронную обработку с помощью нескольких процессов, захвата записей базы данных и очередей сообщений как Скворец . Это обычно - довольно надежный способ масштабировать веб-приложение - по крайней мере, как надежное, чем неправильно многопоточные JAVA-приложения - и имеет добавленное преимущество, что становится легче масштабировать Ваше приложение боком к нескольким процессорам и серверам.

я понятия не имею, был ли 'потребовать' вопрос, который Вы упомянули, решен с 1,9, но я действительно кротко рискую этим, если Вы требуете библиотек динамично в новых потоках тогда, у Вас есть больше чем одна проблема пригодности для обслуживания.

, Если требуется избежать потоков полностью, Ruby 1.9 также поддерживает волокна , которые используют метод без разделения ресурсов для параллелизма и являются, от того, что я собираю, обычно легче записать и поддержать, чем потоки. Показатели производительности здесь .

14
ответ дан 30 November 2019 в 08:27
поделиться

Я действительно предлагаю, чтобы Вы смотрели выступление Jim Weirich от RubyConf 2008 (это очень забавно и информативно:):

https://www.youtube.com/watch? v=fK-N_VxdW7g

Этот хорош также:

http://rubyconf2008.confreaks.com/summer-of-code-rails-thread-safety.html

6
ответ дан 30 November 2019 в 08:27
поделиться

Нормальное решение для МРТ состоит в том, чтобы выполнить несколько экземпляров направляющих, каждый обрабатывающий запросы независимо. Так как МРТ не является многопоточной так или иначе, Вы не можете выполнить несколько экземпляров направляющих сверху ее. Это означает, что Вы получаете удар памяти, так как направляющие загружаются однажды на процесс Ruby.

, Так как JRuby поддерживает собственные потоки, Вы могли всегда выполнять несколько экземпляров направляющих в единственной JVM. Но с направляющими, являющимися ориентированным на многопотоковое исполнение, можно сократить его одному, что означает более низкое использование памяти и меньше JIT-компиляции.

Charles Nutter (JRuby) имеет хорошая сводка .

5
ответ дан 30 November 2019 в 08:27
поделиться

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

, конечно, возможно записать поточные приложения Ruby. Некоторые проблемы, которые существуют с рубиновыми потоками, - то, что они являются 'зелеными' в том, поскольку ими управляет виртуальная машина. В настоящее время интерпретатор по умолчанию (МРТ) только имеет один истинный системный поток, который должен быть совместно использован всеми потоками, которыми управляет интерпретатор.

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

Что касается Вашего вопроса об определенном коде интерпретатора: Я не думаю так. AFAIK Вы не должны делать ничего специального для заботы о потоках JRuby/JVM.

Также: Эта статья о Igvita, который бросает хороший взгляд на состояние параллелизма в Ruby.

1
ответ дан 30 November 2019 в 08:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: