Package kotlin.coroutines

Basic primitives for creating and suspending coroutines: Continuation, CoroutineContext interfaces, coroutine creation and suspension top-level functions.

Basic primitives for creating and suspending coroutines: Continuation, CoroutineContext interfaces, coroutine creation and suspension top-level functions.

Types

AbstractCoroutineContextElement
Link copied to clipboard
abstract class AbstractCoroutineContextElement(key: CoroutineContext.Key<*>) : CoroutineContext.Element

Base class for CoroutineContext.Element implementations.

Since Kotlin

1.3
AbstractCoroutineContextKey
Link copied to clipboard
abstract class AbstractCoroutineContextKey<B : CoroutineContext.Element, E : B>(baseKey: CoroutineContext.Key<B>, safeCast: (element: CoroutineContext.Element) -> E?) : CoroutineContext.Key<E>

Base class for CoroutineContext.Key associated with polymorphic CoroutineContext.Element implementation. Polymorphic element implementation implies delegating its get and minusKey to getPolymorphicElement and minusPolymorphicKey respectively.

Since Kotlin

1.3
Continuation
Link copied to clipboard
interface Continuation<in T>

Interface representing a continuation after a suspension point that returns a value of type T.

Since Kotlin

1.3
ContinuationInterceptor
Link copied to clipboard
interface ContinuationInterceptor : CoroutineContext.Element

Marks coroutine context element that intercepts coroutine continuations. The coroutines framework uses ContinuationInterceptor.Key to retrieve the interceptor and intercepts all coroutine continuations with interceptContinuation invocations.

Since Kotlin

1.3
CoroutineContext
Link copied to clipboard
interface CoroutineContext

Persistent context for the coroutine. It is an indexed set of Element instances. An indexed set is a mix between a set and a map. Every element in this set has a unique Key.

Since Kotlin

1.3
EmptyCoroutineContext
Link copied to clipboard
object EmptyCoroutineContext : CoroutineContext, Serializable

An empty coroutine context.

Since Kotlin

1.3
RestrictsSuspension
Link copied to clipboard
@Target(allowedTargets = [AnnotationTarget.CLASS])
annotation class RestrictsSuspension

Classes and interfaces marked with this annotation are restricted when used as receivers for extension suspend functions. These suspend extensions can only invoke other member or extension suspend functions on this particular receiver and are restricted from calling arbitrary suspension functions.

Since Kotlin

1.3
SuspendFunction
Link copied to clipboard
interface SuspendFunction<out R>

Represents a value of a functional type, such as a lambda, an anonymous function or a function reference.

Functions

Continuation
Link copied to clipboard
inline fun <T> Continuation(context: CoroutineContext, crossinline resumeWith: (Result<T>) -> Unit): Continuation<T>

Creates a Continuation instance with the given context and implementation of resumeWith method.

Since Kotlin

1.3
createCoroutine
Link copied to clipboard
fun <T> suspend () -> T.createCoroutine(completion: Continuation<T>): Continuation<Unit>

Creates a coroutine without a receiver and with result type T. This function creates a new, fresh instance of suspendable computation every time it is invoked.

Since Kotlin

1.3
fun <R, T> suspend R.() -> T.createCoroutine(receiver: R, completion: Continuation<T>): Continuation<Unit>

Creates a coroutine with receiver type R and result type T. This function creates a new, fresh instance of suspendable computation every time it is invoked.

Since Kotlin

1.3
getPolymorphicElement
Link copied to clipboard

Returns the current element if it is associated with the given key in a polymorphic manner or null otherwise. This method returns non-null value if either Element.key is equal to the given key or if the key is associated with Element.key via AbstractCoroutineContextKey. See AbstractCoroutineContextKey for the example of usage.

Since Kotlin

1.3
minusPolymorphicKey
Link copied to clipboard

Returns empty coroutine context if the element is associated with the given key in a polymorphic manner or null otherwise. This method returns empty context if either Element.key is equal to the given key or if the key is associated with Element.key via AbstractCoroutineContextKey. See AbstractCoroutineContextKey for the example of usage.

Since Kotlin

1.3
resume
Link copied to clipboard
inline fun <T> Continuation<T>.resume(value: T)

Resumes the execution of the corresponding coroutine passing value as the return value of the last suspension point.

Since Kotlin

1.3
resumeWithException
Link copied to clipboard
inline fun <T> Continuation<T>.resumeWithException(exception: Throwable)

Resumes the execution of the corresponding coroutine so that the exception is re-thrown right after the last suspension point.

Since Kotlin

1.3
startCoroutine
Link copied to clipboard
fun <T> suspend () -> T.startCoroutine(completion: Continuation<T>)

Starts a coroutine without a receiver and with result type T. This function creates and starts a new, fresh instance of suspendable computation every time it is invoked. The completion continuation is invoked when the coroutine completes with a result or an exception.

Since Kotlin

1.3
fun <R, T> suspend R.() -> T.startCoroutine(receiver: R, completion: Continuation<T>)

Starts a coroutine with receiver type R and result type T. This function creates and starts a new, fresh instance of suspendable computation every time it is invoked. The completion continuation is invoked when the coroutine completes with a result or an exception.

Since Kotlin

1.3
suspendCoroutine
Link copied to clipboard
inline suspend fun <T> suspendCoroutine(crossinline block: (Continuation<T>) -> Unit): T

Obtains the current continuation instance inside suspend functions and suspends the currently running coroutine.

Since Kotlin

1.3

Properties

coroutineContext
Link copied to clipboard
val coroutineContext: CoroutineContext

Returns the context of the current coroutine.