Пакет kotlin.native.concurrent
Типы
AtomicInt
Обёртка над Int с атомными синхронизированными операциями.
class AtomicInt
AtomicLong
Обёртка над Long с атомными синхронизированными операциями.
class AtomicLong
AtomicNativePtr
Обёртка над kotlinx.cinterop.NativePtr с атомными синхронизированными операциями.
class AtomicNativePtr
AtomicReference
Обёртка над Kotlin-объектом с атомными операциями.
class AtomicReference<T>
Continuation0
class Continuation0 : () -> Unit
Continuation1
class Continuation1<T1> : (T1) -> Unit
Continuation2
class Continuation2<T1, T2> : (T1, T2) -> Unit
Откреплённый граф объектов
Откреплённый граф объектов инкапсулирует передаваемый откреплённый подграф, к которому нельзя получить доступ извне, пока он не будет прикреплён с помощью расширяющегося функционального метода attach.
class DetachedObjectGraph<T>
ЗамораживаемыйAtomicReference
Примечание: этот класс полезен только с устаревшей системой управления памятью. Используйте AtomicReference вместо него.
class FreezableAtomicReference<T>
ИсключениеЗамораживания
Исключение, выбрасываемое всякий раз, когда заморозка недоступна.
class FreezingException : RuntimeException
Future
class Future<T>
FutureState
Состояние объекта Future.
enum class FutureState
ИсключениеНевернойИзменяемости
Исключение, выбрасываемое при попытке изменить замороженные объекты.
class InvalidMutabilityException : RuntimeException
MutableData
Буфер данных, доступный для многопоточной модификации. Может одновременно использоваться несколькими рабочими процессами.
class MutableData
TransferMode
Примечание: современная система управления памятью Kotlin/Native позволяет обмениваться объектами между потоками без дополнительных церемоний, поэтому TransferMode имеет эффект только в устаревшей системе управления памятью.
enum class TransferMode
Worker
class Worker
WorkerBoundReference
Управляемая ссылка на Kotlin-объект, которая не замораживает сославшийся объект при собственном замораживании.
class WorkerBoundReference<out T : Any>
Аннотации
SharedImmutable
Примечание: эта аннотация имеет эффект только в Kotlin/Native с устаревшей системой управления памятью.
annotation class SharedImmutable
ThreadLocal
Помечает глобальную переменную или объект как локальную для потока. Объект остается изменяемым, и его состояние можно менять, но каждый поток будет иметь отдельную копию этого объекта, поэтому изменения в одном потоке не отражаются в другом.
annotation class ThreadLocal
Свойства
isFrozen
Проверяет, является ли данный объект нулевым, замороженным или постоянным (т.е. созданным во время компиляции).
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–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/index.html