![]() |
libfilezilla
|
Spawns and represents a new thread of execution. More...
#include <thread.hpp>
Public Member Functions | |
virtual | ~thread () |
Calls std::abort if the thread has not been joined. More... | |
bool | run () |
Start the thread. More... | |
void | join () |
Join the thread. More... | |
bool | joinable () const |
A thread is joinable after having been started and before it has been joined. More... | |
Protected Member Functions | |
virtual void | entry ()=0 |
The thread's entry point, override in your derived class. | |
Friends | |
class | impl |
Spawns and represents a new thread of execution.
This is a replacement of std::thread. Unfortunately std::thread isn't implemented on all MinGW flavors. Most notably, MinGW as shipped by Debian Jessie does not have std::thread.
This class only supports joinable threads (see remark). You MUST join threads in the destructor of the outermost derived class. ~thread() calls std::abort() if join
has not previously been called.
|
virtual |
Calls std::abort
if the thread has not been joined.
To avoid race conditions, all threads need to be joined no later than in the destructor of the most derived class.
void join | ( | ) |
Join the thread.
join blocks until the spawn thread has quit.
You must call this at the latest in the destructor of the most-derived class.
Must not be called from the spawned thread.
After a successful join you can call run again to spawn another thread.
bool joinable | ( | ) | const |
A thread is joinable after having been started and before it has been joined.
Must not be called from the spawned thread.
bool run | ( | ) |
Start the thread.
If a thread has already been started and not yet joined, this function fails.