HP OpenVMS Systems

ask the wizard
Content starts here

Programming with Event Flags and Channels?

» close window

The Question is:

I need some help on Mailboxes. Process A creates a read/write mailbox with I/O
 channel defined in variable chanA. Process B creates a read/write mailbox with
 I/O channel defined in variable chanB.
Process A does a
sys$qio(0, chanA,IO$_WRITEVBLK, ....
Process B issues a read
sys$qio(efn, chanB, IO$_READVBLK
what I don't understand is how Process B can read the stuff written by Process
 A as they both have different event flags and channle numbers !! My code works
 I just can't understand what is happening.

The Answer is :

  Process event flags and process channels are process-specific
  constructs, and have no relation to the process event flags and
  the process channels used in other processes.
  An example of using mailboxes is available at:
  The OpenVMS Wizard would recommend one reader process per
  mailbox, with zero or more processes writing to the mailbox.
  This approach completely avoids the "turn-around" problems
  that are involved with half-duplex communications via a
  single mailbox.
  Do not use event flag zero.  Allocate the required event flags
  using lib$get_ef or (if you are on a sufficiently recent OpenVMS
  version, you can use the "do not care" event flag EFN$C_ENF
  (defined in $EFNDEF/EFNDEF.H).  Read up on $qiow and $synch.
  Always explicitly synchronize I/O completion -- see topic (1661)
  for a list of some common programming errors and various
  programming suggestions.  Also please acquire and read the
  OpenVMS Programming Concepts manual -- the FAQ has a pointer
  to the on-line version of this manual.

answer written or last revised on ( 22-MAR-2001 )

» close window