--
Вы получили это сообщение, поскольку подписаны на группу "Golang Russian".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.
http://dave.cheney.net/2014/06/07/five-things-that-make-go-fast
Places where Goroutines may yield to others are:
Я на самом деле просто хочу узнать когда срабатывает GC?может ли он срабатывать где то в середине функции, например, при выделении очередного массива, и тем самым преключить процесс в другую горутину ?
2014-06-17 7:11 GMT-07:00 Ilia Kandrashou <loo...@gmail.com>:
Это не сопрограммы, горутины выполняются параллельно, поэтому осинхронизации надо заботиться независимо от переключения.
Goroutines are cooperatively scheduled, rather than relying on the kernel to manage their time sharing.
не уходим в офтоп.. :)логически подумав - в какой-то горутине при выделении очередного массива процесс может обнаружить что память закончилась -> и запустить сборщик, -> а тот по завершению своей работы, вернёт управление в другую горутину !прав ли я ?
Настройки подписки и доставки писем: https://groups.google.com/d/optout.
2014-06-17 16:13 GMT-07:00 Ilia Kandrashou <loo...@gmail.com>:
> что значит в начале функции ? вы имеете ввиду что GC может сработать при
> вызове какой либо функции (при условии что она не оптимизировалась в inline)
> ?
GC вызывается либо явно (c помощью runtime.GC) или при аллокации
памяти. Когда GC вызывается, он начинает останавливать горутины
выполняющиеся на других потоках. Эта остановка может произойти в
начале любой (не заинлайненой) функции.
> Вообще конечно моменты переключения горутин весьма не явны, особенно для
> начинающих gophers. Это делает горутины гораздо ближе к потокам чем к
> корутинам. В моих глазах это минус, т.к. по опыту, программирования в стиле
> корутин удобнее чем в стиле потоков, но возможно я просто плохо понимаю
> парадигму CSP.
Горутины это и есть потоки. Не надо пытаться программировать их как
корутины. Надо программировать их как обычные потоки, и не думать о
возможных точках переключения.
быстро сработали.С утра ссылка на Go была на это странице.