forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Coroutines (http://forum.boolean.name/showthread.php?t=20955)

JeanWinters 04.02.2022 21:10

Coroutines
 
Почему в определении сопрограмм утверждается, что "корутины работают параллельно, асинхронно в одном потоке"? Как они могут работать "параллельно", если это слово противоположно по смыслу слову "асинхронно"? Как я понял, корутины - это подпрограммы с множественным входом и выходом, которые временно могут быть приостановлены потоком выполнения. В движке Unity они что-то вроде таймеров и отложенных событий, которые обрабатываются в update. То есть они работают последовательно, но никак не параллельно. Или может неправильно делаю выводы об этом?

Randomize 04.02.2022 22:48

Ответ: Coroutines
 
Потоками рулит ОС и может раскидать их по ядрам процессора так, чтоб они выполнялись "одновременно",
а коротинами библиотека языка и помещает их в некий цикл событий "eventloop", который выполняется дозировано и последовательно.

То есть, да, коротины не параллельны.

ABTOMAT 05.02.2022 16:00

Ответ: Coroutines
 
Цитата:

Сообщение от JeanWinters (Сообщение 319155)
Почему в определении сопрограмм утверждается, что "корутины работают параллельно, асинхронно в одном потоке"? Как они могут работать "параллельно", если это слово противоположно по смыслу слову "асинхронно"? Как я понял, корутины - это подпрограммы с множественным входом и выходом, которые временно могут быть приостановлены потоком выполнения. В движке Unity они что-то вроде таймеров и отложенных событий, которые обрабатываются в update. То есть они работают последовательно, но никак не параллельно. Или может неправильно делаю выводы об этом?

При выполнении yield return корутина передаёт управление другому потоку.
То есть каждая корутина должна время от времени "уступать" управление другим, чтобы и те тоже успели поработать и возникла иллюзия параллельности.
Ну то есть технически они, конечно, не параллельны, но создаётся такая иллюзия для удобства.


Часовой пояс GMT +4, время: 01:04.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot