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