CDL supports two types of semaphore object;
Counting Semaphores
CDL's counting semaphores (CSMs) can be used as a direct equivalent to conventional counting semaphores; that is to say that one requester is unblocked for each signal delivered to the semaphore. They can also be designated as 'consuming semaphores' and in this mode, they will consume events from their designated provider, and then convert each event into a semaphore event (as though they had been signaled). In practice, these objects are seldom used. See Counting Semaphores.
Logical Semaphores
Logical semaphores (LSMs) contain a single signed integer which can be modified by signalers. Consumers can specify keys and rules. For example, the consumer may wish to block until the semaphore value exceeds 24, or is equal to 15 and so on. These objects are primarily provided as a means of providing switching and routing logic (equivalent to conditional branching). See Logical Semaphores.