|
| LUNCHBOX_API | Thread () |
| | Construct a new thread. More...
|
| |
| LUNCHBOX_API | Thread (const Thread &from) |
| | Copy constructor. More...
|
| |
| virtual LUNCHBOX_API | ~Thread () |
| | Destruct the thread. More...
|
| |
| virtual LUNCHBOX_API bool | start () |
| | Start the thread. More...
|
| |
| virtual bool | init () |
| | The init function for the child thread. More...
|
| |
| virtual void | run ()=0 |
| | The entry function for the child thread. More...
|
| |
| virtual LUNCHBOX_API void | exit () |
| | Exit the child thread immediately. More...
|
| |
| LUNCHBOX_API void | cancel () |
| | Cancel (stop) the child thread. More...
|
| |
| LUNCHBOX_API bool | join () |
| | Wait for the exit of the child thread. More...
|
| |
| LUNCHBOX_API bool | isStopped () const |
| | Return if the thread is stopped. More...
|
| |
| LUNCHBOX_API bool | isRunning () const |
| | Return if the thread is running. More...
|
| |
| LUNCHBOX_API bool | isCurrent () const |
| |
Utility class to execute code in a separate execution thread.
- Deprecated:
- Use Boost.Thread
Example:
#include <test.h>
#include <lunchbox/clock.h>
#include <lunchbox/sleep.h>
#include <lunchbox/thread.h>
#include <iostream>
#define NTHREADS 256
{
public:
virtual ~LoadThread() {}
};
class InitThread : public LoadThread
{
public:
InitThread() : initLeft( false ) {}
virtual ~InitThread() {}
{
initLeft = true;
return true;
}
{
}
bool initLeft;
};
class FailThread : public InitThread
{
public:
virtual ~FailThread() {}
{
return false;
}
};
int main( int, char** )
{
LoadThread loadThreads[NTHREADS];
for( size_t i=0; i<NTHREADS; ++i )
TEST( loadThreads[i].
start( ));
for( size_t i=0; i<NTHREADS; ++i )
TEST( loadThreads[i].
join( ));
std::cout << "Spawned and joined " << NTHREADS << " loadThreads in "
<< time << " ms (" << (NTHREADS/time) << " threads/ms)"
<< std::endl;
for( size_t i=0; i<NTHREADS; ++i )
InitThread initThreads[NTHREADS];
for( size_t i=0; i<NTHREADS; ++i )
{
TEST( initThreads[i].
start( ));
TEST( initThreads[i].initLeft == true );
}
for( size_t i=0; i<NTHREADS; ++i )
TEST( initThreads[i].
join( ));
FailThread failThread;
TEST( !failThread.start( ));
TEST( !failThread.isRunning( ));
TEST( failThread.isStopped( ));
TEST( !failThread.join( ));
return EXIT_SUCCESS;
}
Definition at line 41 of file thread.h.