A synchronization construct orders the completion of code executed by different threads. This ordering is imposed by synchronizing flush operations that are executed as part of the region that corresponds to the construct.
Synchronization through the use of synchronizing flush operations and atomic operations is described in Section 1.4.4 and Section 1.4.6. Section 15.8.6 defines the behavior of synchronizing flush operations that are implied at various other locations in an OpenMP program.