Waits specified number of seconds and then resumes. If Seconds
= 0.0 then it waits until next tick/frame/update. If Seconds
= Inf then it waits forever and only calls back if canceled - such as via race
. If Seconds
< 0.0 then it completes immediately and does not yield to other aysnc expressions.
Waiting until the next update (0.0) is especially useful in a loop of a coroutine that needs to do some work every update and this yields to other coroutines so that it doesn't hog a processor's resources.
Waiting forever (Inf) will have any expression that follows never be evaluated. Occasionally it is desireable to have a task never complete such as the last expression in a race
subtask where the task must never win the race though it still may be canceled earlier.
Immediately completing (less than 0) is useful when you want programmatic control over whether an expression yields or not.
Verse using statement |
using { /Verse.org/Simulation } |
Sleep<native><public>(Seconds:float)<suspends><diverges><reads><writes><allocates><no_rollback>:void
Parameters
Sleep
takes the following parameters:
Name | Type | Description |
---|---|---|
Seconds |
float |
Attributes and Effects
The following attributes and effects determine how Sleep
behaves and how you can use it in your programs. For the complete list of attribute and effect specifiers, see the Specifiers Page.
Attribute | Meaning |
---|---|
native |
Indicates that the definition details of the element are implemented in C++. Verse definitions with the native specifier auto-generate C++ definitions that a developer can then fill out its implementation. You can use this specifier on classes, interfaces, enums, methods, and data. |
public |
The identifier is universally accessible. You can use this on modules, classes, interfaces, structs, enums, methods, and data. |
Effect | Meaning |
---|---|
suspends |
Indicates that the function is async. Creates an async context for the body of the function. |
diverges |
Indicates that calls to the function may not complete. |
reads |
This effect indicates that the same inputs to the function may not always produce the same output. The behavior depends on factors external to the specified inputs, such as memory or the containing package version. |
writes |
This effect indicates that the function may change values in memory. |
allocates |
This effect indicates that the function may instantiate an object in memory. Allocating <unique> classes requires the <allocates> specifier. |
no_rollback |
This is the default effect when no exclusive effect is specified. The no_rollback effect indicates that any actions performed by the function cannot be undone and so the function cannot be used in a failure context. This effect cannot be manually specified. |