The critical region construct can be usefully extended by adding region entry conditions and replacing the mutual exclusion restriction by a more general restriction. This paper discusses an extended construct of this nature, and presents an implementation approach based on Dijkstra's secretary process concept, with the code for the secretary process generated automatically during program compilation. This type of implementation can produce efficient solutions to many complex synchronization problems. It is also applicable in a wide range of hardware/software environments, including many existing systems. The use of the construct is demonstrated by a number of programming examples.