Здравствуйте, Sharov, Вы писали:
N>>В Go это точно так же как в случае ОС — переход в ожидание, или просто вызов чего-то в рантайме. Пустой вечный цикл в Go заблокирует целиком одну системную нить рантайма. S>А чем системная нить rt в Го отличается от потока ОС?
Это одно и то же. (И, на всякий случай, нить = thread в нормальной терминологии, а поток это stream или flow, но не thread.)
Рантайм Go держит максимум указанное в GOMAXPROCS (да, название сомнительно) количество рабочих нитей (умолчание равно количеству harts == hardware threads, которое равно количеству ядер без гипертрединга и умножается на количество тредов в ядре для включённого гипертрединга; в документации Go, однако, эти сущности называются CPU). Внутренний планировщик решает, какую горутину будет исполнять конкретная нить.
N>>В Erlang не так — там рантайм считает "редукции", но за это платится тратой процессора. S>А это что такое, в двух словах, если можно?
Выполнение одного элементарного действия (вызов функции, выполнение арифметической операции...)