TransferMode
enum class TransferMode
Примечание: современный менеджер памяти Kotlin/Native позволяет обмениваться объектами между потоками без дополнительных церемоний, поэтому TransferMode имеет значение только в устаревшем менеджере памяти.
Основы передачи объектов.
Объекты могут передаваться между потоками в одном из двух возможных режимов.
- БЕЗОПАСНО - проверяется подграф объектов, чтобы он не был доступен из других глобальных или локальных переменных, и передаётся, если это так, в противном случае выбрасывается исключение
- НЕБЕЗОПАСНО - объект передаётся другому рабочему потоку без проверок, если в передающем рабочем потоке остались ссылки - это может привести к сбою или некорректной работе программы
В безопасном режиме проверяется, не используется ли объект в передающем рабочем потоке, используя алгоритм, специфичный для управления памятью (реализация ARC полагается на пробное удаление в графе объектов, укоренённом в переданном объекте), и выбрасывается IllegalStateException, если граф объектов, укоренённый в переданном объекте, доступен каким-либо другим способом.
Небезопасный режим предназначен для наиболее критически важных с точки зрения производительности операций, где ожидается правильное владение графом объектов (например, приложение отлажено ранее в режиме БЕЗОПАСНО), просто передаётся владение без дополнительных проверок.
Обратите внимание, что в некоторых случаях необходимо выполнить сборку циклов, чтобы убедиться, что мёртвые циклы не влияют на достижимость переданного графа объектов.
См. также
Значения перечисления
БЕЗОПАСНО
Выполняется проверка достижимости.
НЕБЕЗОПАСНО
Проверка достижимости пропускается, что может привести к загадочным сбоям в приложении. ИСПОЛЬЗУЙТЕ РЕЖИМ НЕБЕЗОПАСНО ТОЛЬКО ЕСЛИ ВЫ УВЕРЕНЫ В ТОМ, ЧТО ДЕЛАЕТЕ!!!
Свойства
value
val value: Int
© 2010–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.native.concurrent/-transfer-mode/index.html