TransferMode
enum class TransferMode
Основы передачи объектов.
Объекты могут передаваться между потоками в одном из двух возможных режимов.
- БЕЗОПАСНЫЙ - проверяется подграф объекта на отсутствие ссылок на другие глобальные или локальные переменные, и передаётся, если таковых нет, в противном случае выбрасывается исключение
- НЕБЕЗОПАСНЫЙ - объект передаётся другому рабочему потоку без проверки, если в передающем потоке остались ссылки — это может привести к сбою или некорректной работе программы
Режим «Безопасный» проверяет, не используется ли объект в передающем потоке, используя алгоритм, специфичный для управления памятью (реализация ARC полагается на пробное удаление в графе объектов, укоренённом в переданном объекте), и выбрасывает IllegalStateException, если граф объектов, укоренённый в переданном объекте, доступен каким-либо другим способом.
Режим «Небезопасный» предназначен для наиболее критически важных с точки зрения производительности операций, где ожидается корректное владение графом объектов (например, приложение, отлаженное ранее в режиме «Безопасный»), просто передает владение без дальнейших проверок.
Обратите внимание, что в некоторых случаях необходимо выполнить сборку циклов, чтобы убедиться, что мёртвые циклы не влияют на доступность переданного графа объектов.
См. также
kotlin.native.internal.GC.collect
Значения перечисления
БЕЗОПАСНЫЙ
Выполняется проверка достижимости.
НЕБЕЗОПАСНЫЙ
Проверка достижимости пропускается, что может привести к необъяснимым сбоям в приложении. ИСПОЛЬЗУЙТЕ РЕЖИМ «НЕБЕЗОПАСНЫЙ» ТОЛЬКО ЕСЛИ ВЫ УВЕРЕНЫ В ТОМ, ЧТО ДЕЛАЕТЕ!!!
Свойства
значение
val value: Int
© 2010–2020 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