Пакет kotlin.native.concurrent
Типы
AtomicInt
Атомные значения и замораживание: атомные типы AtomicInt, AtomicLong, AtomicNativePtr и AtomicReference уникальны с точки зрения замораживания. А именно, они предоставляют операции изменения, но могут участвовать в замороженных подграфах. Таким образом, общие замороженные объекты могут иметь поля атомных типов.
class AtomicInt
AtomicLong
class AtomicLong
AtomicNativePtr
class AtomicNativePtr
AtomicReference
Атомная ссылка на замороженный Kotlin-объект. Может использоваться в конкурентных сценариях, но часто должна быть типом с возможностью null и обнуляться, когда больше не требуется. В противном случае может произойти утечка памяти. Для обнаружения таких утечек в режиме отладки может быть полезно kotlin.native.internal.GC.detectCycles.
class AtomicReference<T>
Continuation0
class Continuation0 : () -> Unit
Continuation1
class Continuation1<T1> : (T1) -> Unit
Continuation2
class Continuation2<T1, T2> : (T1, T2) -> Unit
DetachedObjectGraph
Отдельный граф объектов encapsulates переносимый отдельный подграф, к которому нельзя получить доступ извне, пока он не будет подключен с помощью функции расширения attach.
class DetachedObjectGraph<T>
FreezableAtomicReference
Атомная ссылка на Kotlin-объект. Может использоваться в конкурентных сценариях, но сначала должна быть заморожена, иначе ведет себя как обычная упаковка значения. Если заморожена, должна быть обнулена, когда больше не требуется. В противном случае может произойти утечка памяти. Для обнаружения таких утечек в режиме отладки может быть полезно kotlin.native.internal.GC.detectCycles.
class FreezableAtomicReference<T>
FreezingException
Исключение, выбрасываемое всякий раз, когда замораживание невозможно.
class FreezingException : RuntimeException
Future
Класс, представляющий абстрактное вычисление, результат которого может стать доступным в будущем.
class Future<T>
FutureState
Состояние объекта Future.
enum class FutureState
InvalidMutabilityException
Исключение, выбрасываемое при попытке изменить замороженные объекты.
class InvalidMutabilityException : RuntimeException
MutableData
Изменяемый, одновременно доступный буфер данных. К нему могут одновременно обращаться несколько потоков.
class MutableData
TransferMode
Основы передачи объектов.
enum class TransferMode
Worker
Класс, представляющий worker.
class Worker
WorkerBoundReference
Общий указатель на Kotlin-объект, который не замораживает ссылаемый объект, когда сам замораживается.
class WorkerBoundReference<out T : Any>
Аннотации
SharedImmutable
Помечает свойство верхнего уровня с поддерживающим полем как неизменяемое. Можно совместно использовать значение такого свойства между несколькими потоками, но оно становится глубоко замороженным, поэтому его состояние или состояние ссылаемых объектов изменить нельзя.
annotation class SharedImmutable
ThreadLocal
Помечает свойство верхнего уровня с поддерживающим полем или объект как локальный для потока. Объект остается изменяемым и его состояние можно изменить, но каждый поток будет иметь отдельную копию этого объекта, поэтому изменения в одном потоке не отражаются в другом.
annotation class ThreadLocal
Свойства
isFrozen
Проверяет, является ли данный объект null, замороженным или постоянным (т.е. созданным во время компиляции).
val Any?.isFrozen: Boolean
Функции
atomicLazy
Атомарный ленивый инициализатор, может использоваться в замороженных объектах, замораживает лямбду инициализации, поэтому используйте с осторожностью. Кроме того, как и при других использованиях AtomicReference, потенциально может привести к утечке памяти, поэтому рекомендуется использовать atomicLazy в случаях объектов, живущих вечно, таких как объекты-синглтоны, или в случаях, когда гарантируется отсутствие циклического мусора.
fun <T> atomicLazy(initializer: () -> T): Lazy<T>
attach
Прикрепляет ранее отсоединённую подграф объекта, созданную с помощью DetachedObjectGraph. Обратите внимание, что после прикрепления графа объектов указатель DetachedObjectGraph.stable больше не имеет смысла и должен быть удалён, поэтому прикрепление одного объекта DetachedObjectGraph может произойти только один раз.
fun <T> DetachedObjectGraph<T>.attach(): T
callContinuation0
fun COpaquePointer.callContinuation0()
callContinuation1
fun <T1> COpaquePointer.callContinuation1()
callContinuation2
fun <T1, T2> COpaquePointer.callContinuation2()
ensureNeverFrozen
Эта функция гарантирует, что если во время попытки заморозки мы видим такой объект — попытка заморозки завершается неудачно, и выбрасывается FreezingException.
fun Any.ensureNeverFrozen()
заморозить
Замораживает подграф объекта, доступный из этого объекта. Замороженные объекты могут свободно использоваться между потоками/рабочими процессами.
fun <T> T.freeze(): T
дождаться нескольких будущих
fun <T> Collection<Future<T>>.waitForMultipleFutures( millis: Int ): Set<Future<T>>
ждать завершения работы рабочей единицы
fun waitWorkerTermination(worker: Worker)
с рабочей единицей
Выполняет block с новой рабочей единицей как ресурсом, запуская новую рабочую единицу, вызывая предоставленный block (в текущем контексте) с только что запущенной рабочей единицей как этой и завершая рабочую единицу после завершения блока. Обратите внимание, что эта операция довольно ресурсоёмкая, используйте предварительно настроенную рабочую единицу или пул рабочих единиц, если вам нужно выполнять её часто.
fun <R> withWorker( name: String? = null, errorReporting: Boolean = true, block: Worker.() -> R ): R
© 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/index.html