Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Система безопасности в работе с C#

Условия гонки

При написании многопоточного кода всегда существует риск условия гонки. Состояние гонки возникает, когда результат одной операции зависит от времени другого процесса, находящегося вне его контроля.

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

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

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

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

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

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

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

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3