Skip to content

Latest commit

 

History

History
22 lines (16 loc) · 3.67 KB

File metadata and controls

22 lines (16 loc) · 3.67 KB

Что такое горутина и чем она отличается от тредов и процессов?

Горутина - это так называемый "легковесный поток", который реализован на программном уровне, в отличии от потоков и процессов операционной системы. Они дают нам слой абстракции для буферного накопления и распределения выполнения горутин между потоками в процессах операцинной системы. Что может быть гораздо эффективнее в мире многоядерных процессоров. Создание горутин несёт меньше накладных расходов, чем создание потоков. Множество горутин могут выполняться на одном потоке. Горутины общаются между собой через каналы.


Системные потоки и процессы - это две ключевые концепции, используемые в операционных системах для выполнения задач. Вот основные различия между ними:

Процесс:

  • Процесс - это экземпляр программы, который выполняется.
  • Каждый процесс имеет свое собственное адресное пространство и не делится его с другими процессами.
  • Процессы требуют IPC (межпроцессное взаимодействие) для общения друг с другом.
  • Каждый раз, когда мы создаем процесс, нам нужно сделать отдельный системный вызов для каждого процесса к ОС.

Поток (Thread):

  • Поток - это базовая единица использования ЦПУ, состоящая из счетчика программ, стека и набора регистров.
  • Потоки выполнения образуются в результате разветвления компьютерной программы на две или более одновременно выполняющихся задач.
  • Реализация потоков и процессов отличается от одной операционной системы к другой, но в большинстве случаев поток содержится внутри процесса.
  • Несколько потоков могут существовать в рамках одного и того же процесса и делить ресурсы, такие как память, в то время как разные процессы не делят эти ресурсы.
  • Потоки - это по сути процессы, которые работают в одном и том же контексте памяти.

Важно отметить, что потоки и процессы связаны, но в то же время являются ортогональными понятиями. Поток - это то, что фактически выполняет ЦПУ; это связано с планированием доступа к общим ресурсам (например, ЦПУ). Процесс - это выделенная память для инструкций и данных (процессу требуется память для кода и данных).