Visualization Tool Kit(VTK)など

Boost.Threadです。Stl.Threadに取り込まれますが若干機能が異なります。
LinuxでもWindowsでも動きます。
その他、同期をとるための条件変数や中断命令などがあります。


class SomeClass
{
  public:
  SomeClass() {}
  void Start()
  {
    //多重起動チェック
    if( mThread.get_id() != boost::thread::id() ) return;
    mActiveFlag = true;
    mThread = boost::thread( &SomeClass::ThreadFunction, this );
  }

  void Stop()
  {
    //このサンプルでは不要だが、スレッド間で共有する変数に変更を加えるときはロックする
    {
      LockType lock(mMutex);
      mActiveFlag = false;
    }
    mThread.join();
  }

private:
  void ThreadFunction()
  {
    bool active_flag = true;
    while(active_flag)
    {
      // working here

      active_flag = mActiveFlag;
    }
  }

  bool mActiveFlag;
  boost::thread mThread;
  boost::mutex mMutex;
  typedef boost::mutex::scoped_lock LockType;
};

SomeClass s;
s.Start(); // start thread
s.Stop(); // stop thread

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

メニュー

チュートリアル

アルゴリズム(数学)

並列計算

STL

#include<memory> #include<string> #include<sstream> #include<algorithm> #include<functional> #include<numeric>

Media Foundation

【メニュー編集】
Wiki記法ガイド

メンバーのみ編集できます