Glossary of Terms¶
- Activity¶
Ongoing action that drives forward a simulation - either through time or events. Activities may be suspended and resumed as desired, or interrupted involuntarily.
- Time¶
Representation of the progression of a simulation. Whereas the unit of time is arbitrary, its value always grows.
Time may only pass while all activities are suspended until a later time, not turn. An activity may actively wait for the progression of time, or implicitly delay until an event happens at a future point in time.
- Turn¶
- Event¶
A well-defined occurrence at a specific point in time. Events may occur as result of activities (“when dinner is done”), as time passes (“after 20 time units”), or at predefined points in time (“at 2000 time units”),
- Notification¶
Information sent to an activity, usually in response to an event. Notifications are only received when the activity is suspended, i.e. at an
await
,async for
orasync with
.- Postponement¶
Suspension of an activity until a later turn at the same time. When an activity is postponed, notifications may be received and other activities may run but time does not advance.
- note
μSim guarantees that all its primitives postpone on asynchronous operations. This ensures that activities are reliably and deterministically interwoven.
- Suspension¶
Pause the execution of an activity, allowing other activities or time to advance. A suspended activity is only resumed when it receives a notification.
Suspension can only occur as part of asynchronous statements: waiting for the target of an
await
statement, fetching the next item of anasync for
statement, and entering/exiting anasync with
block.