Document revision date: 19 July 1999
OpenVMS Programming Concepts Manual
Previous
Contents
Index
Chapter 16
16
Synchronizing Data Access and Program Operations
16.1
Overview of Synchronization
16.1.1
Threads of Execution
16.1.2
Atomicity
16.2
Memory Read and Memory Write Operations
16.2.1
Alignment
16.2.2
Granularity
16.2.3
Ordering of Read and Write Operations
16.2.4
Memory Reads and Memory Writes
16.3
Memory Read-Modify-Write Operations
16.3.1
Uniprocessor Operations
16.3.2
Multiprocessor Operations
16.4
Hardware-Level Synchronization
16.4.1
Interrupt Priority Level
16.4.2
LD
x
_L and ST
x
_C Instructions (Alpha Only)
16.4.3
Interlocked Instructions (VAX Only)
16.4.4
Memory Barriers (Alpha Only)
16.4.5
PALcode Routines (Alpha Only)
16.5
Software-Level Synchronization
16.5.1
Synchronization Within a Process
16.5.2
Synchronization in Inner Mode (Alpha Only)
16.5.3
Synchronization Using Process Priority
16.5.4
Synchronizing Multiprocess Applications
16.5.5
Writing Applications for an Operating System Running in a Multiprocessor Environment
16.5.6
Synchronization Using Spin Locks
16.5.7
Writable Global Sections
16.6
Using Event Flags
16.6.1
General Guidelines for Using Event Flags
16.6.2
Introducing Local and Common Event Flag Numbers and Event Flag Clusters
16.6.3
Using Event Flag Zero (0)
16.6.4
Using EFN$C_ENF Local Event Flag
16.6.5
Using Local Event Flags
16.6.5.1
Example of Event Flag Services
16.6.6
Using Common Event Flags
16.6.6.1
Using the name Argument with SYS$ASCEFC
16.6.6.2
Temporary Common Event Flag Clusters
16.6.6.3
Permanent Common Event Flag Clusters
16.6.7
Wait Form Services and SYS$SYNCH
16.6.8
Event Flag Waits
16.6.9
Setting and Clearing Event Flags
16.6.10
Example of Using a Common Event Flag Cluster
16.6.11
Example of Using Event Flag Routines and Services
16.7
Synchronizing Operations with Parallel Processing Run-Time Routines
16.7.1
Using Subprocesses
16.7.2
Using Spin Locks
16.7.3
Using Semaphores
16.7.4
Using Barrier Synchronization
16.8
Synchronizing Operations with System Services
Chapter 17
17
Synchronizing Access to Resources
17.1
Synchronizing Operations with the Lock Manager
17.2
Concepts of Resources and Locks
17.2.1
Resource Granularity
17.2.2
Resource Domains
17.2.3
Resource Names
17.2.4
Choosing a Lock Mode
17.2.5
Levels of Locking and Compatibility
17.2.6
Lock Management Queues
17.2.7
Concepts of Lock Conversion
17.2.8
Deadlock Detection
17.2.9
Lock Quotas and Limits
17.2.9.1
Enqueue Limit Quota (ENQLM)
17.2.9.2
Sub-Resources and Sub-Locks
17.2.9.3
Resource Hash Table
17.2.9.4
LOCKIDTBL System Parameter
17.3
Queuing Lock Requests
17.3.1
Example of Requesting a Null Lock
17.4
Advanced Locking Techniques
17.4.1
Synchronizing Locks
17.4.2
Notification of Synchronous Completion
17.4.3
Expediting Lock Requests
17.4.4
Lock Status Block
17.4.5
Blocking ASTs
17.4.6
Lock Conversions
17.4.7
Forced Queuing of Conversions
17.4.8
Parent Locks
17.4.9
Lock Value Blocks
17.5
Dequeuing Locks
17.6
Local Buffer Caching with the Lock Management Services
17.6.1
Using the Lock Value Block
17.6.2
Using Blocking ASTs
17.6.2.1
Deferring Buffer Writes
17.6.2.2
Buffer Caching
17.6.3
Choosing a Buffer-Caching Technique
17.7
Example of Using Lock Management Services
Chapter 18
18
Image Initialization
18.1
Initializing an Image
18.2
Initializing an Argument List
18.3
Declaring Initialization Routines
18.4
Dispatching to Initialization Routines
18.5
Initialization Routine Options
18.6
Initialization Example
Previous
Next
Contents
Index
privacy and legal statement
5841PRO_CONTENTS_006.HTML