@Obscutum

Как распараллелить цикл в Unity с помощью System.Threading?

Суть задачи проста. У меня есть гигантский трёхмерный массив float4 (из библиотеки Unity.Mathematics), и есть цикл, который над каждым элементом этого массива производит расчёты, а результаты по порядку заносит в два листа. Я просто не смог разобраться в том, как с помощью System.Threading:
1) Разделить выполнение цикла поровну между потоками
2) Сохранить порядок следования результатов в листах
  • Вопрос задан
  • 89 просмотров
Решения вопроса 1
DanceM
@DanceM Куратор тега Unity
Кто хочет -ищет способ, кто не хочет -ищет причину
Корутина не поможет, т.к. она всё равно выполняется в основном потоке Unity, многопоточности не будет, как таковой.

Да, используйте Thread'ы, они отлично работают в Юнити, если их правильно применять. Как с тредами работать - уроки и документация есть в гугле.

Дальше разбивайте массив на Х частей, запускайте Х циклов, по одному на каждую часть, и сохраняйте Х листов.
После пройдетесь по листам и организуете результаты в нужном порядке.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы