Function in task compiler

shield

fn shield<T>(unit -> T body) -> T
Import
use task::{shield};
Source: compiler/src/prelude/task.hy

Runs body so that a cancel waits for it to finish instead of interrupting it.

Use it around work that must not be left half done, such as writing a record. A cancel that arrives meanwhile takes effect when body returns.

Parameters#

NameType
bodyunit -> T

Returns#

T

See also#

  • scope: Runs body with a Scope for starting child tasks, and returns its value once body and every child have finished.
  • sleep: Suspends the current task for at least ms milliseconds; other tasks run meanwhile.
  • yield_now: Lets other ready tasks run before the current one continues.
  • timeout: Runs body as a task and cancels it if it has not finished after ms milliseconds.
  • channel: Creates a channel that holds up to capacity values.
  • blocking: Runs work on another OS thread and waits for its result; only the current task waits, the others keep running.
  • blocking_with: Like blocking, passing arg to work (it is copied to the other thread, like thread::spawn(work, arg)).
  • block_on: Resumes the coroutine handle until it is done and returns its completion value; values it yields are discarded.
↑ ↓ navigate ↵ open