> 
>> В   текущей  реализации  говоришь  интерпретатору,  сколько  потоков
>> хочешь,  и он делает. Дальнейшая работа по параллелизации сопрограмм
>> происходит практически прозрачно для программиста.
> 
> Так  я и спрашиваю, как именно оно переносит сопрограмму с одного ядра
> на другой?

http://morsmachine.dk/go-scheduler - доступно и с картинками :)

Технически гоурутины стоят в очередях на контексты (которых не больше 
GOMAXPROC), выполняемые в системных тредах (1 контекст - 1 тред). Если треду 
надо локнуться - он отдает контекст с его очередью другому треду (взятому из 
кэша или вновь созданному, если кэш пуст) - про это читать в "Who you gonna 
(sys)call?" по ссылке выше

Евгений
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить