Асинхроность vs Многопоточность в Unity3d

Общие вопросы о Unity3D

Асинхроность vs Многопоточность в Unity3d

Сообщение artk 04 сен 2013, 09:31

Недавно дошло как устроена многозадачность в Unity.(через столько то лет :ymsigh: )
Coroutine, Update - это чистая асинхроность, а коротина - это стандартный asynchronous enumerator.
Почему-то до сих пор не возникала потребность использования потоков. Да и в юнити много блокировок.
В общем, в чем преимущества каждой технологии? Когда следует использовать ансихроность, а когда потоки?
Какой шаблон асихронности использует Unity: APM, EPM, TAP?
Последний раз редактировалось artk 04 сен 2013, 09:59, всего редактировалось 1 раз.
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22

Re: Асинхроность vs Многопоточность в Unity3d

Сообщение BornFoRdeatH 04 сен 2013, 09:40

Вот не знаю, для меня единственное преимущество потока это возможность выполнения дорогостоящих операций, в остальном такие минусы как невозможность взаимодействия с апи юнити(что практически вкорень срезает применение потоков).
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: Асинхроность vs Многопоточность в Unity3d

Сообщение artk 04 сен 2013, 10:02

BornFoRdeatH писал(а):Вот не знаю, для меня единственное преимущество потока это возможность выполнения дорогостоящих операций.

А какие именно дорогостоящие операции, например? В играх все потоки одинаково важны, и тяжелые задачи, в любом случаи, придется ожидать до конца. Проще сделать асинхронно.
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22

Re: Асинхроность vs Многопоточность в Unity3d

Сообщение BornFoRdeatH 04 сен 2013, 10:18

например поиск пути А*
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: Асинхроность vs Многопоточность в Unity3d

Сообщение jetyb 04 сен 2013, 12:02

Coroutine, Update - это чистая асинхроность

Почему? У меня все есть основания полагать наоборот.

Когда следует использовать ансихроность, а когда потоки?

Может я нублю, но в чем между ними принципиальная разница? Всегда считал асинхронные операции классовой оберткой над потоками.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: Асинхроность vs Многопоточность в Unity3d

Сообщение artk 04 сен 2013, 13:25

jetyb писал(а):Может я нублю, но в чем между ними принципиальная разница? Всегда считал асинхронные операции классовой оберткой над потоками.

Тоже интересно как реализована многопоточность.
Изначально было изобретено именно ansyc, а уже потом многопоточность.
Многопоточность реализована на уровне ОСи и процессора, а ansyc - это синтаксический сахар, реализованный, вроде, при помощи прерываний, и работает в одном потоке. Т.е. в ansyc мы сами управляем процессом, а потоками управлять почти нельзя.
ansyc - это тупо стек задач. Когда мы хотим "подожать" какую-нибудь функция, она заносится в стек. На каждую задачу выделяется определенно время.
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22

Re: Асинхроность vs Многопоточность в Unity3d

Сообщение Sality 09 сен 2013, 11:39

наврятли, скорее все эти апдеты и курутины в одном потоке, и неважно как вы их назовете, они всеравно последовательно вызываются. Потому что еслиб операции были в разных потоках, мы не имели бы прямого доступа внутри апдейта наружу.
Аватара пользователя
Sality
Старожил
 
Сообщения: 771
Зарегистрирован: 26 ноя 2011, 15:31
Откуда: Украина


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 11