>
>> В текущей реализации говоришь интерпретатору, сколько потоков
>> хочешь, и он делает. Дальнейшая работа по параллелизации сопрограмм
>> происходит практически прозрачно для программиста.
>
> Так я и спрашиваю, как именно оно переносит сопрограмму с одного ядра
> на другой?
http://morsmachine.dk/go-scheduler - доступно и с картинками :)
Технически гоурутины стоят в очередях на контексты (которых не больше
GOMAXPROC), выполняемые в системных тредах (1 контекст - 1 тред). Если треду
надо локнуться - он отдает контекст с его очередью другому треду (взятому из
кэша или вновь созданному, если кэш пуст) - про это читать в "Who you gonna
(sys)call?" по ссылке выше
Евгений
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org