ecsproto.threads
Описание
Языки
- C#100%
LeoECS Proto Threads
Интеграция многопоточной обработки для LeoECS Proto.
ВАЖНО! Требует C#9 (или Unity >=2021.2).
ВАЖНО! Зависит от: Leopotam.EcsProto.
ВАЖНО! Не забывайте использовать
-версии билдов для разработки иDEBUG-версии билдов для релизов: все внутренние проверки/исключения будут работать только вRELEASE-версиях и удалены для увеличения производительности вDEBUG-версиях.RELEASE
ВАЖНО! Проверено на Unity 2021.3 (зависит от нее) и содержит asmdef-описания для компиляции в виде отдельных сборок и уменьшения времени рекомпиляции основного проекта.
Социальные ресурсы
Официальный блог: https://leopotam.ru
Установка
В виде unity модуля
Поддерживается установка в виде unity-модуля через git-ссылку в PackageManager или прямое редактирование :
"ru.leopotam.ecsproto.threads": "https://gitverse.ru/leopotam/ecsproto.threads.git",
В виде исходников
Код так же может быть склонирован или получен в виде архива со страницы релизов.
Прочие источники
Официальная работоспособная версия размещена по адресу https://gitverse.ru/leopotam/ecsproto.threads, все остальные версии (включая nuget, npm и прочие репозитории) являются неофициальными клонами или сторонним кодом с неизвестным содержимым.
Использование с итератором
Итераторы и расширяются новым методом, позволяющим распараллелить обработку на несколько потоков:
ВАЖНО! Использовать анонимные функции нельзя - это приведет к постоянным аллокациям.
ВАЖНО! Использовать методы напрямую без явного сохранения в поле системы нельзя - это приведет к постоянным аллокациям.
ВАЖНО! Использовать апи unity, апи мира или другие не потокобезопасные вызовы нельзя.
ВАЖНО! Обращаться к другим итераторам или пулам компонентов не из списка компонентов текущего итератора крайне не рекомендуется - проверка контроля целостности в этом случае отсутствует.
Возможно использование локальных методов с тем же правилом доступа через поле системы:
По умолчанию максимальное количество потоков равняется количеству ядер процессора (удвоенному в случае HT). Это значение можно ограничить, передав новое значение третим параметром:
ВАЖНО! Этот пакет можно использовать на WebGL-платформе, в этом случае максимальное количество потоков всегда будет ограничено одним.
Лицензия
Расширение выпускается под лицензией MIT-ZARYA, подробности тут.