Информация об изменениях

Сообщение Re[6]: Горутины и потоки от 29.06.2021 5:59

Изменено 29.06.2021 6:11 netch80

Re[6]: Горутины и потоки
Здравствуйте, Sharov, Вы писали:

N>>В Go это точно так же как в случае ОС — переход в ожидание, или просто вызов чего-то в рантайме. Пустой вечный цикл в Go заблокирует целиком одну системную нить рантайма.

S>А чем системная нить rt в Го отличается от потока ОС?

Это одно и то же. (И, на всякий случай, нить = thread в нормальной терминологии, а поток это stream или flow, но не thread.)

N>>В Erlang не так — там рантайм считает "редукции", но за это платится тратой процессора.

S>А это что такое, в двух словах, если можно?

Выполнение одного элементарного действия (вызов функции, выполнение арифметической операции...)
Re[6]: Горутины и потоки
Здравствуйте, Sharov, Вы писали:

N>>В Go это точно так же как в случае ОС — переход в ожидание, или просто вызов чего-то в рантайме. Пустой вечный цикл в Go заблокирует целиком одну системную нить рантайма.

S>А чем системная нить rt в Го отличается от потока ОС?

Это одно и то же. (И, на всякий случай, нить = thread в нормальной терминологии, а поток это stream или flow, но не thread.)
Рантайм Go держит максимум указанное в GOMAXPROCS (да, название сомнительно) количество рабочих нитей (умолчание равно количеству harts == hardware threads, которое равно количеству ядер без гипертрединга и умножается на количество тредов в ядре для включённого гипертрединга; в документации Go, однако, эти сущности называются CPU). Внутренний планировщик решает, какую горутину будет исполнять конкретная нить.

N>>В Erlang не так — там рантайм считает "редукции", но за это платится тратой процессора.

S>А это что такое, в двух словах, если можно?

Выполнение одного элементарного действия (вызов функции, выполнение арифметической операции...)