atomic_scope
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
| — | atomic_scope [2007/02/15 03:53] (current) – created - external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ======Atomic Scopes====== | ||
| + | |||
| + | =====What is an atomic scope? | ||
| + | An //atomic scope// is the period of time during which local variables live. | ||
| + | At the beginning of an //atomic scope// there are no local variables, and | ||
| + | at the end of that //atomic scope//, all local variables are destroyed. | ||
| + | Thus, the //atomic scope// defines the availability and lifetime of a local | ||
| + | variable. | ||
| + | |||
| + | When the client starts up, it creates a global //atomic scope// that lives | ||
| + | for the entire lifetime of the client. | ||
| + | local variables, even from the input prompt. | ||
| + | |||
| + | From time to time (see the list below), the client creates new atomic scopes. | ||
| + | When a new atomic scope is created, any local variables that were visible in | ||
| + | the previous atomic scope are hidden and can no longer be accessed! | ||
| + | client arranges for this by using a stack. | ||
| + | those local variables on its position in the stack. | ||
| + | |||
| + | Eventually an atomic scope ends, and then its local variables are destroyed. | ||
| + | They cannot be recovered once the atomic scope ends. Because the scopes are | ||
| + | stored as a stack, atomic scopes are destroyed in a strict Last-In-First-Out | ||
| + | order. | ||
| + | |||
| + | ======The list of atomic scopes====== | ||
| + | * Commands executed by [[defer]] | ||
| + | * Files loaded by the [[pf loader]] | ||
| + | * [[exec]] -line, -error, or -end callbacks | ||
| + | * Commands executed by [[wait]] -cmd | ||
| + | * User-created key[[bind]]ing callbacks | ||
| + | * Commands executed by [[queue]] | ||
| + | * Commands executed by [[timer]] | ||
| + | * User-created [[set]] callbacks | ||
| + | * [[Who]] -line or -end callbacks | ||
| + | * [[Ison]] -oncmd, -offcmd, or -end callbacks | ||
| + | * [[Userhost]] -cmd callbacks | ||
| + | * [[ON]] callback bodies | ||
| + | * Each time an [[alias]] is executed | ||
| + | |||
| + | ======Sharing local variables: | ||
| + | [future expansion] | ||
| + | |||
| + | ======History: | ||
| + | Local variables first appeared in EPIC4pre0.009 | ||
| + | |||
atomic_scope.txt · Last modified: 2007/02/15 03:53 by 127.0.0.1
