Unity 6.3
0 онлайн 77 гостей 3 в системе
Вход

Обзор системы заданий

Система заданий Unity позволяет создавать многопотоковый код, так что приложение может использовать все доступные ядра CPU для выполнения кода. Это обеспечивает улучшенную производительность, поскольку приложение использует мощность всех ядер CPU, на которых оно работает, более эффективно, вместо того, чтобы запускать весь код на одном ядре CPU.

Вы можете использовать систему заданий самостоятельно, но для повышения производительности, вы должны также использовать Burst компилятор, который специально разработан для компиляции заданий для системы заданий Unity. Компилятор Burst улучшил генерацию кода, что приводит к повышению производительности и снижению потребления батареи на мобильных устройствах.

Вы также можете использовать систему заданий с Entity Component System от Unity для создания высокопроизводительного кода, ориентированного на данные.

Многопоточность

Unity использует собственную систему заданий для обработки собственного кода на нескольких компьютерах рабочие потоки, которые зависят от количества CPU ядра, доступные на устройстве, на котором работает приложение. Обычно Unity выполняет ваш код на одном потоке, который запускается по умолчанию в начале программы, называемом главная нить. Однако, когда вы пользуетесь системой заданий, Unity выполняет ваш код через рабочие потоки, что называется многопоточность.

Многопоточность использует способность CPU обрабатывать множество потоков одновременно на нескольких ядрах. Вместо задач или инструкций, выполняющихся последовательно, они выполняются одновременно. Работающие потоки работают параллельно друг другу, и синхронизируют свои результаты с основным потоком после завершения.

Система заданий обеспечивает наличие только достаточного количества потоков, чтобы соответствовать производительности CPU сердечников, что означает, что вы можете запланировать столько задач, сколько вам нужно, без особой необходимости знать, сколько CPU Это отличается от других систем работы, которые полагаются на методы, такие как пулирование потоков, где легче неэффективно создать больше потоков, чем CPU цвета.

Кража труда

Система заданий использует кражу работы в качестве части своей стратегии планирования, чтобы уравновесить количество задач, разделяемых между рабочими потоками. Работающие потоки могут обрабатывать задачи быстрее, чем другие, так что как только рабочий поток закончил обработку всех своих задач, он смотрит на очереди других рабочих потоков и затем обрабатывает задачи, назначенные другому рабочему потоку.

Система безопасности

Чтобы облегчить написание многопоточного кода, система заданий имеет систему безопасности, которая обнаруживает все потенциальные условия гонки и защищает вас от ошибок, которые они могут вызвать. Условие гонки происходит, когда выход одной операции зависит от времени другого процесса вне его контроля.

Например, если система заданий отправляет в задание ссылку на данные из вашего кода в основном потоке, она не может проверить, читает ли основной поток данные одновременно с записью в него задания. Этот сценарий создает условие гонки.

Чтобы решить эту проблему, система заданий отправляет каждому заданию копию данных, на которых оно должно работать, а не ссылку на данные в главном потоке. Эта копия изолирует данные, что устраняет условие гонки.

Способ копирования данных системой заданий означает, что задание может получать доступ только к типам данных. Эти типы не нуждаются в преобразовании при передаче между управляемым и собственным кодом.

Система заданий использует memcpy для копирования blittable типов и передачи данных между управляемой и основной частями Unity. Она использует memcpy для размещения данных в основной памяти при планировании заданий и предоставляет управляемой стороне доступ к этой копии при выполнении заданий. Для более подробной информации см. Планирование заданий.

Пакет коллекций

В дополнение к системе должностей, предусмотренной в основном Unity двигателя, пакет Collections расширяет многие из функций виды работ и нативные контейнеры. Для получения дополнительной информации см. Коллекции документации.

Дополнительные ресурсы