--- freem/doc/freem.texi 2025/04/20 15:43:32 1.33 +++ freem/doc/freem.texi 2025/04/28 14:52:54 1.34 @@ -4526,9 +4526,13 @@ typedef struct global_header { @node Concurrency Control Overview @section Concurrency Control Overview -Multitasking, multi-user FreeM applications must concern themselves with concurrent access to globals in order to maintain logical consistency and prevent concurrent writes from interleaving. +Multitasking, multi-user FreeM applications must concern themselves with conscientious management of concurrent access to globals in order to maintain logical consistency and prevent concurrent reads and writes from conflicting with each other. -In FreeM, there are two mechanisms provided for managing concurrent global access: advisory locks, and transaction processing. +In FreeM, there are two mechanisms provided for managing concurrent global access: @emph{advisory locks}, and @emph{transaction processing}. + +Advisory locks allow applications to voluntarily coordinate concurrent access to globals with the @code{LOCK} command, and require each application to check the @code{LOCK} status prior to accessing a global. + +Transaction processing allows applications to delineate sets of global operations (sets, kills, etc.) as being part of a transaction, in which no operations are performed against the globals contained within the transaction until the transaction is committed. In addition, processes other than the one running the transaction will be forced to wait to access globals for either the duration of the commit phase (@emph{batch mode}), or for the entire duration of the transaction (@emph{serial mode}). @node Advisory Locks @section Advisory Locks