Поскольку машина событий называется библиотекой асинхронного ввода-вывода модели событий (например, node.js), которая является однопоточной и использует цикл обработки событий для обработки одновременных запросов, действительно ли необходимо заботиться о потоке и использовать егокод уровня приложения ruby (т. е. контроллер rails при обработке запросов)?
Я больше привык к модели node.js, где вы на самом деле просто оборачиваете свой код внутри обратного вызова, а затем все за вас позаботится,(системный вызов select () для kqueue, epoll и т. д., который порождает новые потоки, обрабатывается в реализации C ++ более низкого уровня), а также, ECMAscript по своей природе в любом случае не имеет потоков.
Недавно я видел эту частькода ruby при попытке узнать о Event Machine:
Thread = Thread.current
Thread.new{
EM.run{ thread.wakeup }
}
# pause until reactor starts
Thread.stop
Мне просто любопытно, когда потоки должны использоваться в парадигме программирования на основе событий в среде ruby, и какая конкретная ситуация потребует от нас использованияих.
Я знаю, что в ruby есть потоки, встроенные в язык (зеленые потоки MRI, потоки JRuby JVM), поэтому может возникнуть соблазн использовать потоки?Тем не менее, с моей точки зрения, это несколько отрицательно сказывается на цели, если на самом деле вы не должны беспокоиться о них в коде приложения более высокого уровня, поскольку для решения этой проблемы в значительной степени введена модель, основанная на событиях.
Благодарю.ценим любые ответы / разъяснения.