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