ecsproto.threads

0
README.md

Proto

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 или прямое редактирование

Packages/manifest.json
:

"ru.leopotam.ecsproto.threads": "https://gitverse.ru/leopotam/ecsproto.threads.git",

В виде исходников

Код так же может быть склонирован или получен в виде архива со страницы релизов.

Прочие источники

Официальная работоспособная версия размещена по адресу https://gitverse.ru/leopotam/ecsproto.threads, все остальные версии (включая nuget, npm и прочие репозитории) являются неофициальными клонами или сторонним кодом с неизвестным содержимым.

Использование с итератором

Итераторы

ProtoIt
и
ProtoItExc
расширяются новым методом, позволяющим распараллелить обработку на несколько потоков:

ВАЖНО! Использовать анонимные функции нельзя - это приведет к постоянным аллокациям.

ВАЖНО! Использовать методы напрямую без явного сохранения в поле системы нельзя - это приведет к постоянным аллокациям.

ВАЖНО! Использовать апи unity, апи мира или другие не потокобезопасные вызовы нельзя.

ВАЖНО! Обращаться к другим итераторам или пулам компонентов не из списка компонентов текущего итератора крайне не рекомендуется - проверка контроля целостности в этом случае отсутствует.

Возможно использование локальных методов с тем же правилом доступа через поле системы:

По умолчанию максимальное количество потоков равняется количеству ядер процессора (удвоенному в случае HT). Это значение можно ограничить, передав новое значение третим параметром:

ВАЖНО! Этот пакет можно использовать на WebGL-платформе, в этом случае максимальное количество потоков всегда будет ограничено одним.

Лицензия

Расширение выпускается под лицензией MIT-ZARYA, подробности тут.