внятного найти описание что имеется ввиду или на английском может термин
это значит что по завершению работы горутина не терминируется (return фунцкии которую она выполняла) а переиспользуется для выполнения дальнейшей работы. Создавать горутины в Go дёшего, но всё-же дороже чем переиспользовать например у вас датасет из 1 миллиона пакетов данных, нежели на каждый пакет создавать по горутине - можно создать пул горутин размером с колво логических CPU в системе и, таким образом, переиспользовать их
Спасибо за информацию,думал что специфическое,оказалось все проще)
Какие ваши доказательства? В смысле, почему вдруг переиспользовать дешевле?
По поводу, что выгодней. Хотя может чего-то не учел. https://play.golang.org/p/1YLSJTcap6C cpu: Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz BenchmarkGorutinesPool-12 1000000 1036 ns/op 0.0003840 mem_all_per_iter 0 B/op 0 allocs/op BenchmarkGorutines-12 2066805 521.5 ns/op 0.0000387 mem_all_per_iter 0 B/op 0 allocs/op
это просто пул медленный :)
https://github.com/miekg/dns/issues/639
ну и бенч какой-то странный.
В одном случае ограничение количества через пулы, в другом через семафоры.
Так горутины ничего не делают.
Так ты бенчишь канал ;) И цифры у бенча могут быть и другие: BenchmarkGorutinesPool-16 4449130 269.1 ns/op 0.04915 mem_all_per_iter BenchmarkGorutines-16 2441878 500.5 ns/op 0 mem_all_per_iter
https://play.golang.org/p/z8L2AhZQVyz
Только количество поменял?
количество + канал буферизованный. Фактически, ты бенчишь канал как механизм нотификации.
Ну разница не большая на голой горутине, плюс если семафор убрать, то сравнивается почти.
Я о другом. В этом бенче цифры должны должны зависеть от числа горутин, чего не наблюдается
Обсуждают сегодня