Spec-Zone.ru › Kotlin 1.9

TransferMode

kotlin-stdlib / kotlin.native.concurrent / TransferMode
Требования к платформе и версии: Native (1.3)
enum class TransferMode

Примечание: современный менеджер памяти Kotlin/Native позволяет обмениваться объектами между потоками без дополнительных церемоний, поэтому TransferMode имеет значение только в устаревшем менеджере памяти.

Основы передачи объектов.

Объекты могут передаваться между потоками в одном из двух возможных режимов.

  • БЕЗОПАСНО - проверяется подграф объектов, чтобы он не был доступен из других глобальных или локальных переменных, и передаётся, если это так, в противном случае выбрасывается исключение
  • НЕБЕЗОПАСНО - объект передаётся другому рабочему потоку без проверок, если в передающем рабочем потоке остались ссылки - это может привести к сбою или некорректной работе программы

В безопасном режиме проверяется, не используется ли объект в передающем рабочем потоке, используя алгоритм, специфичный для управления памятью (реализация ARC полагается на пробное удаление в графе объектов, укоренённом в переданном объекте), и выбрасывается IllegalStateException, если граф объектов, укоренённый в переданном объекте, доступен каким-либо другим способом.

Небезопасный режим предназначен для наиболее критически важных с точки зрения производительности операций, где ожидается правильное владение графом объектов (например, приложение отлажено ранее в режиме БЕЗОПАСНО), просто передаётся владение без дополнительных проверок.

Обратите внимание, что в некоторых случаях необходимо выполнить сборку циклов, чтобы убедиться, что мёртвые циклы не влияют на достижимость переданного графа объектов.

См. также

kotlin.native.runtime.GC.collect

Значения перечисления

Требования к платформе и версии: Native (1.3)

БЕЗОПАСНО

Выполняется проверка достижимости.

Требования к платформе и версии: Native (1.3)

НЕБЕЗОПАСНО

Проверка достижимости пропускается, что может привести к загадочным сбоям в приложении. ИСПОЛЬЗУЙТЕ РЕЖИМ НЕБЕЗОПАСНО ТОЛЬКО ЕСЛИ ВЫ УВЕРЕНЫ В ТОМ, ЧТО ДЕЛАЕТЕ!!!

Свойства

Требования к платформе и версии: Native (1.3)

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API