# マニュアルページ stream_MT.3

## 名前

         stream_MT - iostream クラスのオブ ジェ ク ト の  MT-safe/MT-
         unsafe を動的に変化させる基底クラス

## 形式

         #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;
         };

## 機能説明

         stream_MT は、LibC 内の iostream クラスをマルチスレッド環 境
         で 正 し く 機 能 さ せるための基底クラスです。クラス ios と
         streambuf は、 stream_MT から派生したものです。

         iostream オブジェクトが MT-safe (マルチスレッド環境で使用 し
         て も安全) かどうかは、メンバー関数 set_safe_flag() を用いて
         セーフ・フラグをセットすることで動的に変更でき ま す。  ios-
         tream オブジェクトは、 stream_MT::safe_object の値を引数に指
         定すると MT-safe に設定され、 stream_MT::unsafe_object を 引
         数 に指定すると MT-unsafe (マルチスレッド環境で使用できない)
         に設定されます。

         iostream オブジェク ト の 現 在 の 状 態 は メ ン バー 関 数
         test_safe_flag() によって調べることができます。

         iostream オブジェクトが MT-safe の場合、そのオブジェクトの内
         部ロックによってある量のオーバーヘッドが発生します。このオー
         バーヘッドは、セーフ・フラグをゼロに設定して内部ロックをオフ
         にすればなくすことができます。

      コンストラクタ
         stream_MT();
              デフォルトでは、クラス・オブジェクトのセーフ・フラグ  (
              safe_flag ) が stream_MT::safe_object に設定されます。

         stream_MT(stream_bool_t);
              デフォルト値は、セーフ・フラグの値を明示的に設定する こ
              とで変更できます。

      メンバー関数
         stream_bool_ttest_safe_flag();
              セーフ・フラグの現在 の 値 を 返 し ま す。 戻 り 値 が
              stream_MT::unsafe_object 以外のとき、 iostream オブジェ
              クトは MT-safe で、ロックはオンになっています。

         voidset_safe_flag(stream_bool_t);
              iostream オブジェクトの内部セーフ・フラグを引数で指定さ
              れ た値に設定します。ゼロ以外の値を指定するとロックがオ
              ンになり、オブジェクトは MT-safe になります。ゼロを指定
              すると、その逆になります。

## 関連項目

         『C++ ライブラリ・リファレンス』の第 4 章「マルチスレッド 環
         境での従来型の iostream ライブラリの使用」