Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

stream_MT(3C++)

NAME

stream_MT - base class to provide dynamic changing of iostream class objects to and from MT safety. 

SYNOPSIS

#include <rlocks.h>
typedef char stream_bool_t;
 class stream_MT {
public:
enum { unsafe_object=0, safe_object=1 };
stream_MT();
stream_MT(stream_bool_t);
stream_bool_t test_safe_flag();
void set_safe_flag(stream_bool_t);
friend class stream_locker;
};
 

ENVIRONMENT

The discussion about thread safety applies only to Solaris 2.x.  On Solaris 1.x the “safe” and “unsafe” functions behave identically. 

DESCRIPTION

 
Class stream_MT is a base class that allows the iostream classes in libC to work correctly in a multi-threaded environment. The classes ios and streambuf are derived from stream_MT. 
 
The multi-thread (MT) safety of an iostream object can be dynamically changed by setting a safe flag using the member function: set_safe_flag(). An argument with the value of stream_MT::safe_object sets the iostream object to be MT safe, an argument with the value of stream_MT::unsafe_object sets the object to be MT-unsafe. The current state of the iostream object can be determined by the member function: test_safe_flag(). When an iostream object is MT safe there is a certain amount of overhead associated with internal locking in the object. The overhead can be avoided by setting the safe flag to zero which disables internal locking. 
 

Constructors

stream_MT();

By default the safe_flag of the class object is set to stream_MT::safe_object

stream_MT(stream_bool_t);

The default can be changed by providing an explicit value for the safe flag. 

Member functions

 
stream_bool_t test_safe_flag();

Returns the current value of the safe flag. A value other than stream_MT::unsafe_object indicates the iostream object is MT safe and locking is enabled. 

void set_safe_flag(stream_bool_t);

Sets the internal safe flag of the iostream object to the value given as an argument. Setting the value to non-zero enables locking and makes the object MT safe. Setting the value to zero does the reverse. 

SEE ALSO

C++ 4.1 Library Reference Manual:

        Chapter 5, "Using libC in a Multithreaded Environment."

SunOS WorkShop_4.2  —  Last change: 14 March 1995

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026