Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 04.02.2022, 21:10   #1
JeanWinters
Знающий
 
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений
(для 51 пользователей)
Coroutines

Почему в определении сопрограмм утверждается, что "корутины работают параллельно, асинхронно в одном потоке"? Как они могут работать "параллельно", если это слово противоположно по смыслу слову "асинхронно"? Как я понял, корутины - это подпрограммы с множественным входом и выходом, которые временно могут быть приостановлены потоком выполнения. В движке Unity они что-то вроде таймеров и отложенных событий, которые обрабатываются в update. То есть они работают последовательно, но никак не параллельно. Или может неправильно делаю выводы об этом?
(Offline)
 
Ответить с цитированием
Старый 04.02.2022, 22:48   #2
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,354
Написано 2,470 полезных сообщений
(для 6,850 пользователей)
Ответ: Coroutines

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

То есть, да, коротины не параллельны.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
ABTOMAT (06.02.2022), JeanWinters (05.02.2022), St_AnGer (07.02.2022)
Старый 05.02.2022, 16:00   #3
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Coroutines

Сообщение от JeanWinters Посмотреть сообщение
Почему в определении сопрограмм утверждается, что "корутины работают параллельно, асинхронно в одном потоке"? Как они могут работать "параллельно", если это слово противоположно по смыслу слову "асинхронно"? Как я понял, корутины - это подпрограммы с множественным входом и выходом, которые временно могут быть приостановлены потоком выполнения. В движке Unity они что-то вроде таймеров и отложенных событий, которые обрабатываются в update. То есть они работают последовательно, но никак не параллельно. Или может неправильно делаю выводы об этом?
При выполнении yield return корутина передаёт управление другому потоку.
То есть каждая корутина должна время от времени "уступать" управление другим, чтобы и те тоже успели поработать и возникла иллюзия параллельности.
Ну то есть технически они, конечно, не параллельны, но создаётся такая иллюзия для удобства.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
JeanWinters (05.02.2022)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com