Oracle Solaris Studio 12.4 Man Pages

Exit Print View

Updated: January 2015
 
 

stream_MT(3CC4)

Name

stream_MT - 一个基类,用于动态更改 iostream 类对象的多线程安全性。

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

Description

stream_MT 是一个基类,它使得 libC 中的 iostream 类在多线程环境中可以正确运行。类 iosstreambuf 是从 stream_MT 派生的。

可以通过使用成员函数 set_safe_flag() 设置一个安全标志动态更改 iostream 对象的多线程 (multi-thread, MT) 安全性。值为 stream_MT::safe_object 的参数将 iostream 对象设置为多线程安全的,值为 stream_MT::unsafe_object 的参数将对象设置为多线程不安全的。可以通过成员函数 test_safe_flag() 确定 iostream 对象的当前状态。当 iostream 对象为多线程安全对象时,存在与对象中的内部锁定相关的一定数量的开销。可以通过将安全标志设置为零(这将禁用内部锁定)来避免此开销。

构造函数

stream_MT();

缺省情况下,类对象的 safe_flag 设置为 stream_MT::safe_object

stream_MT(stream_bool_t);

可以通过为安全标志提供显式值更改缺省值。

成员函数

stream_bool_t test_safe_flag();

返回安全标志的当前值。stream_MT::unsafe_object 之外的值指示 iostream 对象是多线程安全对象并且将启用锁定。

void set_safe_flag(stream_bool_t);

iostream 对象的内部安全标志设置为作为参数提供的值。将值设置为非零值将启用锁定并使对象成为多线程安全对象。将值设置为零将执行相反的操作。

See also

《C++ Library Reference》中的第 4 章 "Using Classic iostreams in a Multithreaded Environment"。