libfilezilla
Public Member Functions | Protected Member Functions | Friends | List of all members
thread Class Referenceabstract

Spawns and represents a new thread of execution. More...

#include <thread.hpp>

Inheritance diagram for thread:
Inheritance graph
[legend]

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
 

Detailed Description

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.

Remarks
Detached threads aren't implemented since they essentially race conditions by design. You cannot use a detached thread and shutdown your program cleanly.

Constructor & Destructor Documentation

◆ ~thread()

virtual ~thread ( )
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.

Member Function Documentation

◆ join()

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.

◆ joinable()

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.

◆ run()

bool run ( )

Start the thread.

If a thread has already been started and not yet joined, this function fails.


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