Document revision date: 19 July 1999
[Compaq] [Go to the documentation home page] [How to order documentation] [Help on this site] [How to contact us]
[OpenVMS documentation]

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         LDx_L and STx_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

  [Go to the documentation home page] [How to order documentation] [Help on this site] [How to contact us]  
  privacy and legal statement  
5841PRO_CONTENTS_006.HTML