VMS Help
CXXL, iostream_package, Predefined stream objects synchronization

 *Conan The Librarian

  Two unparameterized locking and unlocking manipulators, lock and unlock,
  are available for use in synchronizing access to the predefined stream
  objects: cerr, cin, clog, and cout. If your application needs to lock
  two or more of these objects at the same time, the application must
  adhere to this locking order:

     cin, cerr, clog, cout

  The unlocking order is not important.

  When your application calls a member function for a predefined stream
  object, the member function will typically lock the object for the
  duration of the call.  Therefore, if your application has locked one of
  the stream objects and then uses another, this use must also adhere to
  the predefined locking order.  For example, your application should not
  send output to cerr while cout is locked.

  The locking order necessarily matches the default 'ties' between the
  stream objects as follows:

  cin is tied to cout
  cerr  is tied to cout
  clog is tied to cout
  cout has no ties

  Any input/output operation on a stream object causes the iostream
  Package to flush the object to which it is tied. Thus, an output to
  cerr flushes cout.
  Close     Help