  The group mutual exclusion (GME) problem is a generalization of the classical
mutual exclusion problem in which every critical section is associated with a
type or session. Critical sections belonging to the same session can execute
concurrently, whereas critical sections belonging to different sessions must be
executed serially. The well-known read-write mutual exclusion problem is a
special case of the group mutual exclusion problem. In this work, we present a
novel GME algorithm for an asynchronous shared-memory system that, in addition
to satisfying lockout freedom, bounded exit and concurrent entering properties,
has O(1) step-complexity when the system contains no conflicting requests as
well as O(1) space-complexity per GME object when the system contains
sufficient number of GME objects. To the best of our knowledge, no existing GME
algorithm has O(1) step-complexity for concurrent entering. Moreover, most
existing GME algorithms have {\Omega}(n) space complexity per GME object, where
n denotes the number of processes in the system. We also show that our GME
algorithm can be easily modified to use bounded space variables.
