Boost.Threadです。Stl.Threadに取り込まれますが若干機能が異なります。
LinuxでもWindowsでも動きます。
その他、同期をとるための条件変数や中断命令などがあります。
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
コメントをかく