<html><head><meta http-equiv="Content-Type" content="text/html charset=koi8-r"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Хотя правильнее называть не контекст, а процессор, там и буква P на рисунках стоит от Processor.</div><br><div><div>On Dec 31, 2013, at 3:59 PM, Eugene Toropov <<a href="mailto:eugene.toropov@gmail.com">eugene.toropov@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html charset=koi8-r"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br></div><br><div><blockquote type="cite"><br><blockquote type="cite">В   текущей  реализации  говоришь  интерпретатору,  сколько  потоков<br>хочешь,  и он делает. Дальнейшая работа по параллелизации сопрограмм<br>происходит практически прозрачно для программиста.<br></blockquote><br>Так  я и спрашиваю, как именно оно переносит сопрограмму с одного ядра<br>на другой?<br></blockquote></div><br><div><a href="http://morsmachine.dk/go-scheduler">http://morsmachine.dk/go-scheduler</a> - доступно и с картинками :)</div><div><br></div><div>Технически гоурутины стоят в очередях на контексты (которых не больше GOMAXPROC), выполняемые в системных тредах (1 контекст - 1 тред). Если треду надо локнуться - он отдает контекст с его очередью другому треду (взятому из кэша или вновь созданному, если кэш пуст) - про это читать в "Who you gonna (sys)call?" по ссылке выше</div><div><br></div><div>Евгений</div></div></blockquote></div><br></body></html>