TSDuck Version 3.32-2769 (TSDuck - The MPEG Transport Stream Toolkit)
ts::PluginThread Class Referenceabstract

Base class for threads executing a tsp plugin. More...

Inheritance diagram for ts::PluginThread:
Collaboration diagram for ts::PluginThread:

Public Member Functions

 PluginThread (Report *report, const UString &appName, PluginType type, const PluginOptions &options, const ThreadAttributes &attributes)
 Constructor. More...
 
virtual ~PluginThread () override
 Destructor.
 
virtual bool aborting () const override
 Check for aborting application. More...
 
BitRate bitrate () const
 Get the current input bitrate in bits/seconds. More...
 
BitRateConfidence bitrateConfidence () const
 Get the plugin bitrate confidence. More...
 
bool debug () const
 Check if debugging is active. More...
 
void debug (const UChar *fmt, std::initializer_list< ArgMixIn > args)
 Report a debug message with a printf-like interface. More...
 
void debug (const UString &fmt, std::initializer_list< ArgMixIn > args)
 Report a debug message with a printf-like interface. More...
 
void debug (const UString &msg)
 Report a debug message. More...
 
void error (const UChar *fmt, std::initializer_list< ArgMixIn > args)
 Report an error message with a printf-like interface. More...
 
void error (const UString &fmt, std::initializer_list< ArgMixIn > args)
 Report an error message with a printf-like interface. More...
 
void error (const UString &msg)
 Report an error message. More...
 
void fatal (const UChar *fmt, std::initializer_list< ArgMixIn > args)
 Report a fatal error message with a printf-like interface. More...
 
void fatal (const UString &fmt, std::initializer_list< ArgMixIn > args)
 Report a fatal error message with a printf-like interface. More...
 
void fatal (const UString &msg)
 Report a fatal error message. More...
 
void getAttributes (ThreadAttributes &attributes)
 Get a copy of the attributes of the thread. More...
 
UString getTypeName () const
 Get an implementation-specific name of the object class. More...
 
bool gotErrors () const
 Check if errors (or worse) were reported through this object. More...
 
void info (const UChar *fmt, std::initializer_list< ArgMixIn > args)
 Report an informational message with a printf-like interface. More...
 
void info (const UString &fmt, std::initializer_list< ArgMixIn > args)
 Report an informational message with a printf-like interface. More...
 
void info (const UString &msg)
 Report an informational message. More...
 
bool isCurrentThread () const
 Check if the caller is running in the context of this thread. More...
 
virtual void jointTerminate ()=0
 Signaling "joint termination". More...
 
virtual void log (int severity, const UChar *fmt, std::initializer_list< ArgMixIn > args)
 Report a message with an explicit severity and a printf-like interface. More...
 
virtual void log (int severity, const UString &fmt, std::initializer_list< ArgMixIn > args)
 Report a message with an explicit severity and a printf-like interface. More...
 
virtual void log (int severity, const UString &msg)
 Report a message with an explicit severity. More...
 
virtual void main ()=0
 This hook is invoked in the context of the thread. More...
 
int maxSeverity () const
 Get maximum severity level. More...
 
virtual Pluginplugin () const override
 Access the shared library through the plugin interface. More...
 
virtual size_t pluginCount () const =0
 Get the number of plugins in the processing chain. More...
 
virtual size_t pluginIndex () const =0
 Get the plugin index in the processing chain. More...
 
virtual UString pluginName () const override
 Get the plugin name. More...
 
PacketCounter pluginPackets () const
 Get total number of packets previously processed in the plugin object. More...
 
virtual void raiseMaxSeverity (int level)
 Raise maximum severity level. More...
 
bool realtime () const
 Check if the current plugin environment should use defaults for real-time. More...
 
void resetErrors ()
 Reset the error indicator. More...
 
bool setAttributes (const ThreadAttributes &attributes)
 Set new attributes to the thread. More...
 
void setLogName (const UString &name)
 Set the plugin name as displayed in log messages. More...
 
virtual void setMaxSeverity (int level)
 Set maximum severity level. More...
 
void setPacketTimeout (MilliSecond timeout)
 Set a timeout for the reception of packets by the current plugin. More...
 
void setReport (Report *rep)
 Change the report object. More...
 
void severe (const UChar *fmt, std::initializer_list< ArgMixIn > args)
 Report a severe error message with a printf-like interface. More...
 
void severe (const UString &fmt, std::initializer_list< ArgMixIn > args)
 Report a severe error message with a printf-like interface. More...
 
void severe (const UString &msg)
 Report a severe error message. More...
 
virtual void signalPluginEvent (uint32_t event_code, Object *plugin_data=nullptr) const =0
 Signal a plugin event. More...
 
bool start ()
 Start the thread. More...
 
virtual bool thisJointTerminated () const =0
 Check if the calling plugin has already declared "joint termination". More...
 
PacketCounter totalPacketsInThread () const
 Get total number of packets in the execution of the plugin thread. More...
 
virtual bool useJointTermination () const =0
 Check if the calling plugin uses "joint termination". More...
 
virtual void useJointTermination (bool on)=0
 Activates or deactivates "joint termination". More...
 
bool verbose () const
 Check if verbose reporting is active. More...
 
void verbose (const UChar *fmt, std::initializer_list< ArgMixIn > args)
 Report a verbose message with a printf-like interface. More...
 
void verbose (const UString &fmt, std::initializer_list< ArgMixIn > args)
 Report a verbose message with a printf-like interface. More...
 
void verbose (const UString &msg)
 Report a verbose message. More...
 
bool waitForTermination ()
 Wait for thread termination. More...
 
void warning (const UChar *fmt, std::initializer_list< ArgMixIn > args)
 Report a warning message with a printf-like interface. More...
 
void warning (const UString &fmt, std::initializer_list< ArgMixIn > args)
 Report a warning message with a printf-like interface. More...
 
void warning (const UString &msg)
 Report a warning message. More...
 

Static Public Member Functions

static void Yield ()
 Yield execution of the current thread. More...
 

Static Public Attributes

static const size_t STACK_SIZE_OVERHEAD = 32 * 1024
 Plugin stack size overhead. More...
 

Protected Member Functions

void addNonPluginPackets (size_t incr)
 Account for more processed packets in this plugin thread, but excluded from plugin object. More...
 
void addPluginPackets (size_t incr)
 Account for more processed packets in this plugin object. More...
 
void restartPluginSession ()
 Restart accounting for plugin session. More...
 
void setTypeName (const UString &name=UString())
 Set the type name. More...
 
virtual void writeLog (int severity, const UString &msg) override
 Actual message reporting method. More...
 

Protected Attributes

volatile int _max_severity
 Debug level is accessible to subclasses.
 
volatile bool _tsp_aborting
 TSP is currently aborting.
 
BitRate _tsp_bitrate
 TSP input bitrate.
 
BitRateConfidence _tsp_bitrate_confidence
 TSP input bitrate confidence.
 
MilliSecond _tsp_timeout
 Timeout when waiting for packets (infinite by default).
 
bool _use_realtime
 The plugin should use realtime defaults.
 

Detailed Description

Base class for threads executing a tsp plugin.

The subclasses shall implement the TSP interface.

Constructor & Destructor Documentation

◆ PluginThread()

ts::PluginThread::PluginThread ( Report report,
const UString appName,
PluginType  type,
const PluginOptions options,
const ThreadAttributes attributes 
)

Constructor.

Parameters
[in,out]reportInitial report object. The report object is used to forward messages which are sent to this PluginThread instance (PluginThread is a subclass of Report through TSP).
[in]appNameApplication name, for help messages.
[in]typePlugin type.
[in]optionsCommand line options for this plugin.
[in]attributesCreation attributes for the thread executing this plugin.

Member Function Documentation

◆ setReport()

void ts::PluginThread::setReport ( Report rep)
inline

Change the report object.

Parameters
[in]repAddress of new report instance.

◆ setLogName()

void ts::PluginThread::setLogName ( const UString name)
inline

Set the plugin name as displayed in log messages.

By default, used the real plugin name.

Parameters
[in]nameThe name to use in log messages. When empty, revert to the real plugin name.

◆ pluginName()

virtual UString ts::PluginThread::pluginName ( ) const
overridevirtual

Get the plugin name.

Returns
The plugin name. This is typically the name which is used in the commmand line.

Implements ts::TSP.

◆ plugin()

virtual Plugin* ts::PluginThread::plugin ( ) const
overridevirtual

Access the shared library through the plugin interface.

Returns
Address of the plugin interface.

Implements ts::TSP.

◆ writeLog()

virtual void ts::PluginThread::writeLog ( int  severity,
const UString msg 
)
overrideprotectedvirtual

Actual message reporting method.

Must be implemented in actual classes. The method is called only when a message passed the severity filter. It is not necessary to recheck severity inside the method.

Parameters
[in]severityMessage severity.
[in]msgMessage text.

Implements ts::Report.

◆ setAttributes()

bool ts::Thread::setAttributes ( const ThreadAttributes attributes)
inherited

Set new attributes to the thread.

New attributes can be set as long as the thread is not started, i.e. as long as start() is not invoked.

Parameters
[in]attributesNew attributes to set.
Returns
True on success, false on error (if the thread is already started).

◆ getAttributes()

void ts::Thread::getAttributes ( ThreadAttributes attributes)
inherited

Get a copy of the attributes of the thread.

Parameters
[out]attributesAttributes of the thread.

◆ getTypeName()

UString ts::Thread::getTypeName ( ) const
inherited

Get an implementation-specific name of the object class.

Returns
An implementation-specific name of the object class. The result may be not portable. The returned value may be empty before start().

◆ start()

bool ts::Thread::start ( )
inherited

Start the thread.

The operating system thread is created and started. The code which is executed in the context of this thread is in the method main().

Returns
True on success, false on error (operating system error or the thread is already started).

◆ waitForTermination()

bool ts::Thread::waitForTermination ( )
inherited

Wait for thread termination.

The thread which invokes this method is blocked until the execution of this thread object completes.

Only one waiter thread is allowed. If several threads concurrently invoke waitForTermination() on the same Thread object, only the first one will wait. The method waitForTermination() returns an error to all other threads.

This method is automatically invoked in the destructor. Thus, when a Thread object is declared in a control block and the thread has been started, the end of the control block hangs as long as the thread is not terminated. If the thread has not been started, however, the destructor does not wait (otherwise it would hang for ever).

Important: When a subclass of Thread has non-static members, its destructor shall invoke waitForTermination(). Thus, it prevents its members from being destructed until the thread terminates. If the destructor of the subclass does not invoke waitForTermination() and the Thread object goes out of scope before the termination of the thread, the subclass part of the object is destroyed. Any attempt to access non-static members from the main() method in the context of the thread will give unexpected results. Most of the time, this will result in an error similar to "pure virtual method called". To avoid this:

class MyThread: public ts::Thread
{
public:
virtual ~MyThread()
{
}
...
};

Do not use this method if the thread was created with the delete when terminated flag (ts::ThreadAttributes::setDeleteWhenTerminated).

Returns
True on success, false on error. Errors include operating system errors, the thread is not yet started, the caller thread is this thread (waiting for ourself would result in a dead-lock).

◆ isCurrentThread()

bool ts::Thread::isCurrentThread ( ) const
inherited

Check if the caller is running in the context of this thread.

Returns
True if the caller of isCurrentThread() is running in the context of this thread.

◆ main()

virtual void ts::Thread::main ( )
pure virtualinherited

This hook is invoked in the context of the thread.

Concrete thread classes shall implement this pure virtual method. This method is invoked in the context of the created thread when it is started.

◆ Yield()

static void ts::Thread::Yield ( )
staticinherited

Yield execution of the current thread.

Execution is passed to another thread, if any is waiting for execution. This should not change the behaviour of correctly-written applications.

◆ setTypeName()

void ts::Thread::setTypeName ( const UString name = UString())
protectedinherited

Set the type name.

Parameters
[in]nameThe type name to set. If empty, the subclass type name is used.

◆ bitrate()

BitRate ts::TSP::bitrate ( ) const
inlineinherited

Get the current input bitrate in bits/seconds.

Returns
The current input bitrate in bits/seconds or zero if unknown.

◆ bitrateConfidence()

BitRateConfidence ts::TSP::bitrateConfidence ( ) const
inlineinherited

Get the plugin bitrate confidence.

Returns
The level of confidence of the bitrate value as returned by the previous call to bitrate().

◆ pluginIndex()

virtual size_t ts::TSP::pluginIndex ( ) const
pure virtualinherited

Get the plugin index in the processing chain.

Returns
The plugin index. For a TS processor, this is typically 0 for the input plugin and the number of plugins minus one for the output plugin. For an input switcher, this is in input index for input plugins and the number of plugins minus one for the output plugin.

◆ pluginCount()

virtual size_t ts::TSP::pluginCount ( ) const
pure virtualinherited

Get the number of plugins in the processing chain.

Returns
The number of plugins in the processing chain.

◆ pluginPackets()

PacketCounter ts::TSP::pluginPackets ( ) const
inlineinherited

Get total number of packets previously processed in the plugin object.

For input and output plugins, this is the number of successfully read or written packets. For processor plugins, this is the number of packets which were submitted to the plugin object (ie. excluding previously dropped packets but including packets which were dropped by the current plugin).

Returns
The total number of packets in this plugin object.

◆ totalPacketsInThread()

PacketCounter ts::TSP::totalPacketsInThread ( ) const
inlineinherited

Get total number of packets in the execution of the plugin thread.

This includes the number of extra stuffing or dropped packets.

Returns
The total number of packets in this plugin thread.

◆ realtime()

bool ts::TSP::realtime ( ) const
inlineinherited

Check if the current plugin environment should use defaults for real-time.

Returns
True if the current plugin environment should use defaults for real-time.

◆ setPacketTimeout()

void ts::TSP::setPacketTimeout ( MilliSecond  timeout)
inlineinherited

Set a timeout for the reception of packets by the current plugin.

For input plugins, this is the timeout for the availability of free space in input buffer.

When the timeout is triggered, the method handlePacketTimeout() is invoked in the plugin. If the method returns true, the application continues waiting for packets. If the method returns false, the plugin is aborted.

Parameters
[in]timeoutMaximum number of milliseconds to wait for packets in the buffer. The default timeout is infinite.

◆ aborting()

virtual bool ts::TSP::aborting ( ) const
overridevirtualinherited

Check for aborting application.

The plugin may invoke this method to check if the application is aborting for some reason (user interrupt for instance).

Returns
True if the tsp application is currently aborting.

Implements ts::AbortInterface.

◆ signalPluginEvent()

virtual void ts::TSP::signalPluginEvent ( uint32_t  event_code,
Object plugin_data = nullptr 
) const
pure virtualinherited

Signal a plugin event.

If the application has registered plugin events for this kind of events, they will be invoked.

Parameters
[in]event_codeA plugin-defined 32-bit code describing the event type. There is no predefined list of event codes. Plugin should define their own codes.
[in]plugin_dataAddress of optional plugin-specific data. It can be a null pointer. Each plugin may defined subclasses of Object to pass specific data to application handlers which are aware of this plugin.

◆ useJointTermination() [1/2]

virtual void ts::TSP::useJointTermination ( bool  on)
pure virtualinherited

Activates or deactivates "joint termination".

This method activates or deactivates "joint termination" for the calling plugin. It should be invoked during the plugin's start().

Parameters
[in]onTrue to activate or false to deactivate joint termination.

◆ useJointTermination() [2/2]

virtual bool ts::TSP::useJointTermination ( ) const
pure virtualinherited

Check if the calling plugin uses "joint termination".

Returns
True if the calling plugin uses "joint termination".

◆ jointTerminate()

virtual void ts::TSP::jointTerminate ( )
pure virtualinherited

Signaling "joint termination".

This method is used by the plugin to declare that its execution is potentially terminated in the context of "joint termination". After invoking this method, any packet which is processed by the plugin may be ignored by tsp.

◆ thisJointTerminated()

virtual bool ts::TSP::thisJointTerminated ( ) const
pure virtualinherited

Check if the calling plugin has already declared "joint termination".

Returns
True if the calling plugin has already declared "joint termination".

◆ addPluginPackets()

void ts::TSP::addPluginPackets ( size_t  incr)
inlineprotectedinherited

Account for more processed packets in this plugin object.

Parameters
[in]incrAdd this number of processed packets in the plugin object.

◆ addNonPluginPackets()

void ts::TSP::addNonPluginPackets ( size_t  incr)
inlineprotectedinherited

Account for more processed packets in this plugin thread, but excluded from plugin object.

Parameters
[in]incrAdd this number of processed packets in the plugin thread.

◆ restartPluginSession()

void ts::TSP::restartPluginSession ( )
inlineprotectedinherited

Restart accounting for plugin session.

Typically invoked when the plugin is restarted.

◆ setMaxSeverity()

virtual void ts::Report::setMaxSeverity ( int  level)
virtualinherited

Set maximum severity level.

Messages with higher severities are not reported.

Parameters
[in]levelSet report to that level.

Reimplemented in ts::ReportWithPrefix.

◆ raiseMaxSeverity()

virtual void ts::Report::raiseMaxSeverity ( int  level)
virtualinherited

Raise maximum severity level.

Parameters
[in]levelSet report at least to that level.

Reimplemented in ts::Args.

◆ maxSeverity()

int ts::Report::maxSeverity ( ) const
inlineinherited

Get maximum severity level.

Returns
Current maximum debug level.

◆ debug() [1/4]

bool ts::Report::debug ( ) const
inlineinherited

Check if debugging is active.

Returns
True if current reporting level is Debug or higher.

◆ debug() [2/4]

void ts::Report::debug ( const UString msg)
inlineinherited

Report a debug message.

Parameters
[in]msgMessage text.

◆ debug() [3/4]

void ts::Report::debug ( const UChar fmt,
std::initializer_list< ArgMixIn args 
)
inlineinherited

Report a debug message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ debug() [4/4]

void ts::Report::debug ( const UString fmt,
std::initializer_list< ArgMixIn args 
)
inlineinherited

Report a debug message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ verbose() [1/4]

bool ts::Report::verbose ( ) const
inlineinherited

Check if verbose reporting is active.

Returns
True if current reporting level is Verbose or higher.

◆ verbose() [2/4]

void ts::Report::verbose ( const UString msg)
inlineinherited

Report a verbose message.

Parameters
[in]msgMessage text.

◆ verbose() [3/4]

void ts::Report::verbose ( const UChar fmt,
std::initializer_list< ArgMixIn args 
)
inlineinherited

Report a verbose message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ verbose() [4/4]

void ts::Report::verbose ( const UString fmt,
std::initializer_list< ArgMixIn args 
)
inlineinherited

Report a verbose message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ log() [1/3]

virtual void ts::Report::log ( int  severity,
const UString msg 
)
virtualinherited

Report a message with an explicit severity.

This method is the central reporting point. If filters the severity and drops the message if severity is higher than maxSeverity().

Subclasses should override writeLog() to implement a specific reporting device. It is not necessary to override log() unless the subclass needs to implement a different severity filtering policy.

Parameters
[in]severityMessage severity.
[in]msgMessage text.

◆ log() [2/3]

virtual void ts::Report::log ( int  severity,
const UChar fmt,
std::initializer_list< ArgMixIn args 
)
virtualinherited

Report a message with an explicit severity and a printf-like interface.

Parameters
[in]severityMessage severity.
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ log() [3/3]

virtual void ts::Report::log ( int  severity,
const UString fmt,
std::initializer_list< ArgMixIn args 
)
virtualinherited

Report a message with an explicit severity and a printf-like interface.

Parameters
[in]severityMessage severity.
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ fatal() [1/3]

void ts::Report::fatal ( const UString msg)
inlineinherited

Report a fatal error message.

Parameters
[in]msgMessage text.

◆ fatal() [2/3]

void ts::Report::fatal ( const UChar fmt,
std::initializer_list< ArgMixIn args 
)
inlineinherited

Report a fatal error message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ fatal() [3/3]

void ts::Report::fatal ( const UString fmt,
std::initializer_list< ArgMixIn args 
)
inlineinherited

Report a fatal error message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ severe() [1/3]

void ts::Report::severe ( const UString msg)
inlineinherited

Report a severe error message.

Parameters
[in]msgMessage text.

◆ severe() [2/3]

void ts::Report::severe ( const UChar fmt,
std::initializer_list< ArgMixIn args 
)
inlineinherited

Report a severe error message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ severe() [3/3]

void ts::Report::severe ( const UString fmt,
std::initializer_list< ArgMixIn args 
)
inlineinherited

Report a severe error message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ error() [1/3]

void ts::Report::error ( const UString msg)
inlineinherited

Report an error message.

Parameters
[in]msgMessage text.

◆ error() [2/3]

void ts::Report::error ( const UChar fmt,
std::initializer_list< ArgMixIn args 
)
inlineinherited

Report an error message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ error() [3/3]

void ts::Report::error ( const UString fmt,
std::initializer_list< ArgMixIn args 
)
inlineinherited

Report an error message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ warning() [1/3]

void ts::Report::warning ( const UString msg)
inlineinherited

Report a warning message.

Parameters
[in]msgMessage text.

◆ warning() [2/3]

void ts::Report::warning ( const UChar fmt,
std::initializer_list< ArgMixIn args 
)
inlineinherited

Report a warning message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ warning() [3/3]

void ts::Report::warning ( const UString fmt,
std::initializer_list< ArgMixIn args 
)
inlineinherited

Report a warning message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ info() [1/3]

void ts::Report::info ( const UString msg)
inlineinherited

Report an informational message.

Parameters
[in]msgMessage text.

◆ info() [2/3]

void ts::Report::info ( const UChar fmt,
std::initializer_list< ArgMixIn args 
)
inlineinherited

Report an informational message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ info() [3/3]

void ts::Report::info ( const UString fmt,
std::initializer_list< ArgMixIn args 
)
inlineinherited

Report an informational message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ gotErrors()

bool ts::Report::gotErrors ( ) const
inlineinherited

Check if errors (or worse) were reported through this object.

Returns
True if errors (or worse) were reported through this object.

◆ resetErrors()

void ts::Report::resetErrors ( )
inlineinherited

Reset the error indicator.

See also
gotErrors()

Member Data Documentation

◆ STACK_SIZE_OVERHEAD

const size_t ts::PluginThread::STACK_SIZE_OVERHEAD = 32 * 1024
static

Plugin stack size overhead.

Each plugin defines its own usage of the stack. The PluginThread class and its subclasses have their own additional stack usage.


The documentation for this class was generated from the following file:
ts::Thread
Base class for threads.
Definition: tsThread.h:54
ts::Thread::waitForTermination
bool waitForTermination()
Wait for thread termination.