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