マニュアルページ 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 ライブラリの使用」