hamigaki.png (2451 bytes)

前のページ 上に戻る ホーム 次のページ

Class template basic_background_copy

hamigaki::iostreams::basic_background_copy —

basic_background_copyboost::iostreams::copy()に相当する操作を別スレッドで行うためのインタフェースを提供する。

Synopsis

template<typename ExceptionStorage = hamigaki::thread::exception_storage> 
class basic_background_copy {
public:
  // construct/copy/destruct
  template<typename Source, typename Sink> 
    basic_background_copy(const Source&, const Sink&, 
                          std::streamsize = boost::iostreams::default_device_buffer_size);
  ~basic_background_copy();

  // modifiers
  void stop();

  // queries
  bool done();
  std::streamsize total();
};

Description

basic_background_copyは次に示す2つの状態をとる。

コピー中(copying)
コピー操作のためスレッドが動作している
停止中(stopping)
コピーが完了したか中断された

注意

多くの場合、Source/Sinkはコピーコンストラクタおよびコピー代入演算子によって複製されると、複製元と複製先でデバイスの状態を共有する。basic_background_copyの状態がコピー中である間、このような共有情報を複製元のデバイスを通して変更してはならない。

basic_background_copy construct/copy/destruct

  1. template<typename Source, typename Sink> 
      basic_background_copy(const Source& src, const Sink& sink, 
                            std::streamsize buffer_size = boost::iostreams::default_device_buffer_size);

    Effects: srcから読み込んだデータをdestに書き出すスレッドを起動する。
    Postconditions: 状態=コピー中

  2. ~basic_background_copy();

    Effects: stop()を呼び出す。

basic_background_copy modifiers

  1. void stop();

    Effects: copy()により作成されたスレッドをキャンセルし、その終了を待つ。
    Notes: この関数はスレッドの終了を待つため、ブロックする。
    Postconditions: 状態=停止中

basic_background_copy queries

  1. bool done();

    Requires: 状態=コピー中または停止中
    Returns: コピーが完了したかどうか
    Notes: この関数は、コピーが完了している場合はスレッドの終了を待つ。
    Postconditions: trueを返した場合、状態=停止中。それ以外の場合、状態=コピー中

  2. std::streamsize total();

    Returns: コピーした文字の数

製作著作 © 2006 Takeshi Mouri

前のページ 上に戻る ホーム 次のページ