Является ли Ruby on Rails многопоточным?
Является ли Ruby on Rails многопоточным?
Anonim

Phusion Passenger использует параллелизм на основе процессов для одновременной обработки нескольких запросов, поэтому, строго говоря, это не так. многопоточный , , но по-прежнему одновременно. Это выступление от Рубин У MidWest 2011 есть несколько хороших мыслей о том, как получить многопоточный Ruby on Rails собирается.

Таким образом, поддерживает ли Ruby многопоточность?

А многопоточный программа имеет более одного потока выполнения. Рубин упрощает написание многопоточных программ с помощью класса Thread. Рубин потоки - это легкий и эффективный способ добиться параллелизма в вашем коде.

Во-вторых, параллельна ли Ruby? Особенно, Параллелизм Ruby это когда две задачи могут запускаться, выполняться и завершаться в перекрывающиеся периоды времени. Однако это не обязательно означает, что они оба будут работать одновременно (например, несколько потоков на одноядерной машине).

Аналогично, является ли Ruby однопоточным?

Короткий ответ - да, они однопоточный . Длинный ответ: это зависит от обстоятельств. JRuby - это многопоточный и может быть запущен в Tomcat, как и другой Java-код. МРТ (по умолчанию Рубин ) и Python имеют GIL (глобальную блокировку интерпретатора) и, таким образом, однопоточный.

У Руби есть Гил?

МРТ имеет так называемая глобальная блокировка интерпретатора ( ГИЛ ). Это блокировка выполнения Рубин код. Это означает, что в многопоточном контексте только один поток может выполнять Рубин код в любой момент. В ГИЛ существует для защиты Рубин внутренности от условий гонки, которые могут повредить данные.

Рекомендуемые: