Rev 1317 | Details | Compare with Previous | Last modification | View Log | SVN | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 1309 | runge | 1 | /* |
| 2 | * Thread.cpp |
||
| 3 | * |
||
| 4 | * Created on: Apr 26, 2009 |
||
| 5 | * Author: Mattias Runge |
||
| 6 | */ |
||
| 7 | |||
| 8 | #include "Thread.h" |
||
| 9 | |||
| 10 | using namespace std; |
||
| 11 | |||
| 12 | namespace atom { |
||
| 1317 | runge | 13 | namespace thread { |
| 1309 | runge | 14 | |
| 15 | Thread::Thread() |
||
| 16 | { |
||
| 1403 | runge | 17 | this->is_running_ = false; |
| 1309 | runge | 18 | } |
| 19 | |||
| 20 | Thread::~Thread() |
||
| 21 | { |
||
| 22 | //cout << "Thread destroy" << endl; |
||
| 1403 | runge | 23 | this->Stop(); |
| 1309 | runge | 24 | } |
| 25 | |||
| 1403 | runge | 26 | void Thread::Start() |
| 1309 | runge | 27 | { |
| 1403 | runge | 28 | if (!this->is_running_) |
| 1309 | runge | 29 | { |
| 1403 | runge | 30 | boost::thread localThread(boost::bind(&Thread::RunBase, this)); |
| 31 | this->thread_ = localThread.move(); |
||
| 32 | this->is_running_ = true; |
||
| 1309 | runge | 33 | } |
| 34 | } |
||
| 35 | |||
| 1403 | runge | 36 | void Thread::Stop() |
| 1309 | runge | 37 | { |
| 1403 | runge | 38 | this->thread_.interrupt(); |
| 39 | this->thread_.join(); |
||
| 40 | this->is_running_ = false; |
||
| 1309 | runge | 41 | } |
| 42 | |||
| 1403 | runge | 43 | boost::thread::id Thread::GetId() |
| 1309 | runge | 44 | { |
| 1403 | runge | 45 | return this->thread_.get_id(); |
| 1309 | runge | 46 | } |
| 47 | |||
| 1403 | runge | 48 | bool Thread::IsRunning() |
| 1309 | runge | 49 | { |
| 1403 | runge | 50 | return this->is_running_; |
| 1309 | runge | 51 | } |
| 52 | |||
| 1403 | runge | 53 | void Thread::RunBase() |
| 1309 | runge | 54 | { |
| 1403 | runge | 55 | this->is_running_ = true; |
| 56 | this->Run(); |
||
| 57 | this->is_running_ = false; |
||
| 1309 | runge | 58 | } |
| 59 | |||
| 1403 | runge | 60 | } // namespace thread |
| 61 | } // namespace atom |