Собственные потоки в Ruby 1.9.1, что находится в нем для меня?

Поскольку интервал является кодом возврата, программа может возвратиться к ОС.

можно запросить это значение, чтобы проверить, была ли операция succesfull.

Это было чрезвычайно полезно при использовании сценариев командной строки.

5
задан the Tin Man 27 April 2013 в 14:21
поделиться

2 ответа

Я думаю, что большой win, заключается в том, что расширения на основе C могут выпускать GIL . Так, например, адаптер MySQL может довольно чисто выполнять длительные запросы к базе данных, не блокируя все другие потоки Ruby.

5
ответ дан 13 December 2019 в 05:39
поделиться

Потоки в 1.9 являются собственными, но они были «замедлены», чтобы разрешить одновременное выполнение только одного потока. Это потому, что если бы потоки действительно работали параллельно, это сбило бы с толку существующий код.

Плюсы:

  • Операции ввода-вывода теперь асинхронны в потоках. Если поток блокирует ввод-вывод, то другой поток будет продолжать работу до завершения ввода-вывода.
  • Расширения C могут использовать настоящую многопоточность.

Минусы:

  • Любые расширения C, не являющиеся потокобезопасными, могут иметь проблемы, которые являются трудно найти при использовании Thread. Невозможно пометить расширение как небезопасное для потока, чтобы предотвратить его использование с потоками.
  • Имя класса такое же. Класс нативной потоковой передачи должен был называться как-нибудь иначе.
  • И, что хуже всего, потоки работают по-разному на разных платформах! Например, priority () отличается в Solaris, Windows и Linux. Такие вещи, как loop {} нормально работают в Linux, другие потоки могут работать. Тем не менее, в потоках Solaris, которые расходуют время процесса, вы никогда не выйдете!
7
ответ дан 13 December 2019 в 05:39
поделиться
Другие вопросы по тегам:

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