Голанг | Горутин против потока

Опубликовано: 27 Декабря, 2021

Goroutine: Goroutine - это функция или метод, которые выполняются независимо и одновременно с любыми другими Goroutine, присутствующими в вашей программе. Другими словами, каждое одновременно выполняющееся действие на языке Go известно как горутины.

Поток: процесс - это часть операционной системы, которая отвечает за выполнение приложения. Каждая программа, выполняемая в вашей системе, является процессом, и для запуска кода внутри приложения процесс использует термин, известный как поток. Поток - это легкий процесс, или, другими словами, поток - это блок, который выполняет код в рамках программы. Таким образом, каждая программа имеет логику, и за выполнение этой логики отвечает поток.

Вот некоторые различия между Goroutine и Thread:

Горутин Нить
Горутины управляются средой выполнения go. Потоки операционной системы управляются ядром.
Горутины не зависят от оборудования. Потоки зависят от оборудования.
У горутин есть простое средство коммуникации, известное как канал. У потока нет простого средства коммуникации.
Благодаря наличию первого канала горутина может взаимодействовать с другой горутиной с малой задержкой. Из-за отсутствия удобной среды передачи межпотоковая связь происходит с большой задержкой.
Goroutine не имеет идентификатора, потому что go не имеет локального хранилища потоков. У потоков есть собственный уникальный идентификатор, потому что у них есть локальное хранилище потоков.
Горутины дешевле ниток. Стоимость ниток выше горутины.
Они планируются совместно. Они запланированы заранее.
У них время запуска быстрее, чем у потоков. У них более медленное время запуска, чем у горутин.
Goroutine имеет расширяемые сегментированные стеки. У потоков нет растущих сегментированных стеков.