cgv
cgv::os::thread Class Referenceabstract

#include <thread.h>

Inheritance diagram for cgv::os::thread:
cgv::os::web_server_thread

Public Member Functions

 thread ()
 create the thread
 
virtual ~thread ()
 standard destructor (a running thread will be killed)
 
void start (bool _delete_after_termination=false)
 start the implemented run() method (asynchronly) and destruct the thread object More...
 
virtual void run ()=0
 thread function to override
 
void stop ()
 
void kill ()
 kill a running thread
 
void wait_for_completion ()
 join the current thread More...
 
bool is_running ()
 return true if thread is running
 
bool have_stop_request ()
 check if there is a stop request
 
thread_id_type get_id () const
 return id of this thread
 

Static Public Member Functions

static void wait_for_signal (condition_mutex &cm)
 sleep till the signal from the given condition_mutex is sent, lock the mutex first and unlock after waiting More...
 
static void wait_for_signal_with_lock (condition_mutex &cm)
 prefered approach to wait for signal and implemented as { cm.lock(); wait_for_signal(cm); cm.unlock(); }
 
static bool wait_for_signal_or_timeout (condition_mutex &cm, unsigned millisec)
 sleep till the signal from the given condition_mutex is sent or the timeout is reached, lock the mutex first and unlock after waiting
 
static bool wait_for_signal_or_timeout_with_lock (condition_mutex &cm, unsigned millisec)
 prefered approach to wait for signal or the timeout is reached and implemented as { cm.lock(); wait_for_signal_or_timeout(cm,millisec); cm.unlock(); }
 
static void wait (unsigned millisec)
 wait the given number of milliseconds
 
static thread_id_type get_current_thread_id ()
 return the id of the currently executed thread
 

Protected Member Functions

void execute ()
 executes the run method
 

Detailed Description

Thread class implementation that uses pthreads internally. To create and run your own thread, follow this example: \begincode class mythread : thread {

    void run()
    {

no external stop request? while(no_stop_request()) { std::cout << "abc" << std::endl; } }

};

mythread t1;

t1.start(); ... t1.stop();

Member Function Documentation

◆ start()

void cgv::os::thread::start ( bool  _delete_after_termination = false)

start the implemented run() method (asynchronly) and destruct the thread object

start the implemented run() method (asynchronly)

◆ stop()

void cgv::os::thread::stop ( )

try to stop the thread execution via indicating a stop request. The existence of a stop request can be recognized by the no_stop_request() method. This test should be done periodically within the implementation of the run() method, e.g. to leave the execution loop in a clean way.

◆ wait_for_completion()

void cgv::os::thread::wait_for_completion ( )

join the current thread

the thread is interpreted as a slave thread and started from another master thread. This method is called from the master thread in order to wait for termination of the slave thread.

◆ wait_for_signal()

void cgv::os::thread::wait_for_signal ( condition_mutex cm)
static

sleep till the signal from the given condition_mutex is sent, lock the mutex first and unlock after waiting

sleep till the signal from the given condition_mutex is sent


The documentation for this class was generated from the following files: