When we introduced the server (in The server),
we mentioned that the ChannelCreate()
function takes a flags parameter
and that we'd just leave it as zero.
Now it's time to explain the flags.
We'll examine only a few of the possible flags values:
- _NTO_CHF_FIXED_PRIORITY
 
- The receiving thread will not change priority based on
  the priority of the sender.
  (We talk more about priority issues in the
  Priority inheritance
  section, below).
  Ordinarily (i.e., if you don't specify this flag), the receiving
  thread's priority is changed to that of the sender.
  
  
  
  
 
- _NTO_CHF_UNBLOCK
 
- The kernel delivers a pulse whenever a client thread
  attempts to unblock.
  The server must reply to the client in order to allow the
  client to unblock.
  We'll discuss this one below, because it has some very interesting consequences,
  for both the client and the server.
  
  
  
  
 
- _NTO_CHF_THREAD_DEATH
 
- The kernel delivers a pulse whenever a thread blocked on this channel dies.
  This is useful for servers that want to maintain a fixed 
  pool of threads
  available to service requests at all times.
  
  
  
  
 
- _NTO_CHF_DISCONNECT
 
- The kernel delivers a pulse whenever all connections from a single client
  have been disconnected from the server.
  
  
  
  
 
- _NTO_CHF_COID_DISCONNECT
 
- The kernel delivers a pulse whenever any connection owned by this process is terminated due to the
  channel on the other end going away.