Голанг | Горутин против потока
Опубликовано: 27 Декабря, 2021
Goroutine: Goroutine - это функция или метод, которые выполняются независимо и одновременно с любыми другими Goroutine, присутствующими в вашей программе. Другими словами, каждое одновременно выполняющееся действие на языке Go известно как горутины.
Поток: процесс - это часть операционной системы, которая отвечает за выполнение приложения. Каждая программа, выполняемая в вашей системе, является процессом, и для запуска кода внутри приложения процесс использует термин, известный как поток. Поток - это легкий процесс, или, другими словами, поток - это блок, который выполняет код в рамках программы. Таким образом, каждая программа имеет логику, и за выполнение этой логики отвечает поток.
Вот некоторые различия между Goroutine и Thread:
Горутин | Нить |
---|---|
Горутины управляются средой выполнения go. | Потоки операционной системы управляются ядром. |
Горутины не зависят от оборудования. | Потоки зависят от оборудования. |
У горутин есть простое средство коммуникации, известное как канал. | У потока нет простого средства коммуникации. |
Благодаря наличию первого канала горутина может взаимодействовать с другой горутиной с малой задержкой. | Из-за отсутствия удобной среды передачи межпотоковая связь происходит с большой задержкой. |
Goroutine не имеет идентификатора, потому что go не имеет локального хранилища потоков. | У потоков есть собственный уникальный идентификатор, потому что у них есть локальное хранилище потоков. |
Горутины дешевле ниток. | Стоимость ниток выше горутины. |
Они планируются совместно. | Они запланированы заранее. |
У них время запуска быстрее, чем у потоков. | У них более медленное время запуска, чем у горутин. |
Goroutine имеет расширяемые сегментированные стеки. | У потоков нет растущих сегментированных стеков. |