The only thread-related type that protocol programmers need be aware of is the type Semaphore. However, this type is defined by the underlying platform and is opaque to the protocol programmer.