## Class template basic_background_copy

hamigaki::iostreams::basic_background_copy —

`basic_background_copy`は`boost::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`は次に示す２つの状態をとる。

コピー中(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, 2007 Takeshi Mouri