Spec-Zone.ru › Kotlin 1.8

TransferMode

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

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

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

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

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

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

Режим «Небезопасный» предназначен для наиболее критически важных с точки зрения производительности операций, где предполагается корректность владения графом объектов (например, приложение отлажено ранее в режиме «Безопасный»), просто передаёт владение без дальнейшей проверки.

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

См. также

kotlin.native.internal.GC.collect

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

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

БЕЗОПАСНЫЙ

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

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

НЕБЕЗОПАСНЫЙ

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

Свойства

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

значение

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