Pull to refresh

Comments 6

Спасибо! Побольше бы статей про Go. С новым годом =)!
Присоединяюсь! Пора создавать хабрасообщество любителей Go.

А вообще круто что даже 31го декабря глубоко под вечер появляются такие статьи, спасибо автор! С новым годом!
Горутины — это нечто в роде очень дешевых и легковесных потоков. Больше всего, наверное, они похожи на процессы в Erlang


Уж очень поверхностное объяснение для программистов. И когда говорят про легковесные потоки в Erlang складывается ощущение какой-то магии. Но недавно столкнулся с темой легковесных потоков и на самом деле все проще некуда.

Легковесные потоки это ни какая ни магия, а простая эмуляция потоков в одном или нескольких нативных потоках. Еще известная как green threads. Сделаны они для того, чтобы устранить проблему переключения огромного количества нативных поток в ОС. На практике может произойти ситуация, что время на переключение между множеством нативных (тяжелых) поток может уходить больше, чем на саму полезную работу. Поэтому и стали использовать green threads, когда нужно много потоков, а ядер очень мало.

И кстати, в Java, например, раньше были именно легковесные потоки, но затем их убрали и сделали нативные. А в Solaris можно и сегодня выбрать как будет работать Java, через green theads или нативно.
И всё-таки разница есть. У вас ведь не получится запустить 700k одновременно работающих ( с потерей производительности до 2% ) зелёных потоков в Java на домашнем компьютере ;)

Насколько я помню, они потому и были убраны, что работали медленнее системных потоков.

А горутины — это скорее вариация сопрограмм ( coroutine ), общающихся между собой сообщениями:

Don't communicate by sharing memory; share memory by communicating.

Но авторы всё-таки отступились от начальной концепции, поэтому подобрали новое название.

Насчет производительности не в курсе. Несомненно, авторы Go хорошо продумали свои горутины и хорошо их оптимизировали и оптимизируют в будущем. Как-никак горутины это одна из важных фишек Go.

Но и в Scala (и Java) есть нечто похожее — Akka
Думаю да. Хотя, честно говоря, я не знаток Scala. Но из того, что я читал, у меня сложилось впечатление, что Акторы — это несколько более высокоуровневая штука.
Sign up to leave a comment.

Articles