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<public><native>(Seconds:float)<transacts><suspends><no_rollback>:void
Parameters
Sleep takes the following parameters:
| Name | Type | Description |
|---|---|---|
Seconds |
float |
Attributes, Specifiers, and Effects
Specifiers
The following specifiers determine how you can interact with Sleep in your programs. For the complete list of specifiers, see the Specifiers Page.
| Specifier | Meaning |
|---|---|
public |
The identifier is universally accessible. You can use this on modules, classes, interfaces, structs, enums, methods, and data. |
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. |
Effects
The following effects determine how Sleep behaves in your programs. For the complete list of effects, see the Effect Specifers section of the Specifiers Page.
| Effect | Meaning |
|---|---|
transacts |
This effect indicates that any actions performed by the function can be rolled back. The transacts effect is required any time a mutable variable (var) is written. You'll be notified when you compile your code if the transacts effect was added to a function that can't be rolled back. Note that this check is not done for functions with the native specifier. |
suspends |
Indicates that the function is async. Creates an async context for the body of the function. |
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. |