Комментарии 6
Спасибо! Побольше бы статей про Go. С новым годом =)!
Присоединяюсь! Пора создавать хабрасообщество любителей Go.
А вообще круто что даже 31го декабря глубоко под вечер появляются такие статьи, спасибо автор! С новым годом!
А вообще круто что даже 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.
Но авторы всё-таки отступились от начальной концепции, поэтому подобрали новое название.
Насколько я помню, они потому и были убраны, что работали медленнее системных потоков.
А горутины — это скорее вариация сопрограмм ( coroutine ), общающихся между собой сообщениями:
Don't communicate by sharing memory; share memory by communicating.
Но авторы всё-таки отступились от начальной концепции, поэтому подобрали новое название.
Насчет производительности не в курсе. Несомненно, авторы Go хорошо продумали свои горутины и хорошо их оптимизировали и оптимизируют в будущем. Как-никак горутины это одна из важных фишек Go.
Но и в Scala (и Java) есть нечто похожее — Akka
Но и в Scala (и Java) есть нечто похожее — Akka
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Go: производительность горутин