libUTL++
|
#include <Thread.h>
Public Member Functions | |
virtual const Object & | getKey () const |
Get the key for this object. More... | |
size_t | id () const |
Get the thread's ID. More... | |
uint_t | node () const |
Get the thread's assigned node (NUMA). More... | |
uint_t & | node () |
Get the thread's assigned node (NUMA). More... | |
bool | isDetached () const |
Determine whether the thread is detached. More... | |
void | cancel () |
Cancel the thread. More... | |
void * | join (bool deleteSelf=true) |
Join on the thread. More... | |
virtual void * | run (void *arg=nullptr)=0 |
Run the thread. More... | |
void | start (void *arg=nullptr, bool join=true) |
Start the thread. More... | |
virtual void | pause () |
Clean up stored state in preparation for re-use. More... | |
randutils::mt19937_64_rng * | rng () |
Get the random generator (initialize it if necessary). More... | |
Public Member Functions inherited from utl::Object | |
void | clear () |
Revert to initial state. More... | |
virtual int | compare (const Object &rhs) const |
Compare with another object. More... | |
virtual void | copy (const Object &rhs) |
Copy another instance. More... | |
virtual void | vclone (const Object &rhs) |
Make an exact copy of another instance. More... | |
virtual void | steal (Object &rhs) |
"Steal" the internal representation from another instance. More... | |
virtual void | dump (Stream &os, uint_t level=uint_t_max) const |
Dump a human-readable representation of self to the given output stream. More... | |
void | dumpWithClassName (Stream &os, uint_t indent=4, uint_t level=uint_t_max) const |
Front-end for dump() that prints the object's class name. More... | |
bool | hasKey () const |
Determine whether or not the object has a key. More... | |
virtual const Object & | getProxiedObject () const |
Get the proxied object (= self if none). More... | |
virtual Object & | getProxiedObject () |
Get the proxied object (= self if none). More... | |
virtual size_t | hash (size_t size) const |
Get the hash code for the object. More... | |
bool | _isA (const RunTimeClass *runTimeClass) const |
Determine whether self's class is a descendent of the given class. More... | |
virtual String | toString () const |
Return a string representation of self. More... | |
operator String () const | |
Conversion to String. More... | |
size_t | allocatedSize () const |
Get the total allocated size of this object. More... | |
virtual size_t | innerAllocatedSize () const |
Get the "inner" allocated size. More... | |
virtual void | addOwnedIt (const class FwdIt *it) const |
Notify self that it owns the given iterator. More... | |
virtual void | removeOwnedIt (const class FwdIt *it) const |
Notify self that the given owned iterator has been destroyed. More... | |
bool | operator< (const Object &rhs) const |
Less-than operator. More... | |
bool | operator<= (const Object &rhs) const |
Less-than-or-equal-to operator. More... | |
bool | operator> (const Object &rhs) const |
Greater-than operator. More... | |
bool | operator>= (const Object &rhs) const |
Greater-than-or-equal-to operator. More... | |
bool | operator== (const Object &rhs) const |
Equal-to operator. More... | |
bool | operator!= (const Object &rhs) const |
Unequal-to operator. More... | |
void | serializeIn (Stream &is, uint_t mode=ser_default) |
Serialize from an input stream. More... | |
void | serializeOut (Stream &os, uint_t mode=ser_default) const |
Serialize to an output stream. More... | |
virtual void | serialize (Stream &stream, uint_t io, uint_t mode=ser_default) |
Serialize to or from a stream. More... | |
void | serializeOutBoxed (Stream &os, uint_t mode=ser_default) const |
Serialize a boxed object to an output stream. More... | |
Public Member Functions inherited from utl::NamedObjectMI | |
NamedObjectMI () | |
Constructor. | |
NamedObjectMI (const String &name) | |
Constructor. More... | |
void | clear () |
Clear the name. More... | |
const String & | getName () const |
Get the name. More... | |
const String * | getNamePtr () const |
Get the address of the name. More... | |
void | setName (const String &name) |
Set the name. More... | |
Static Public Member Functions | |
static Thread * | get () |
Get a pointer to the current thread's Thread object. More... | |
static thread_handle_t | handle () |
Get a handle to the current thread. More... | |
static void | testCancel () |
Test for cancellation. More... | |
static void | yield () |
Yield the processor to allow another thread to run. More... | |
static ulong_t | tlsNew () |
Return a newly created TLS key. More... | |
static void * | tlsGet (ulong_t key) |
Get the value of a key in TLS. More... | |
static void | tlsSet (ulong_t key, void *value) |
Set the value of a key in TLS. More... | |
Static Public Member Functions inherited from utl::Object | |
static Object * | serializeInNullable (Stream &is, uint_t mode=ser_default) |
Serialize a nullptr-able object from an input stream. More... | |
static void | serializeOutNullable (const Object *object, Stream &os, uint_t mode=ser_default) |
Serialize a nullptr-able object to an output stream. More... | |
static void | serializeNullable (Object *&object, Stream &stream, uint_t io, uint_t mode=ser_default) |
Serialize a nullptr-able object to or from a stream. More... | |
static Object * | serializeInBoxed (Stream &is, uint_t mode=ser_default) |
Serialize a boxed object from an input stream. More... | |
static void | serializeBoxed (Object *&object, Stream &stream, uint_t io, uint_t mode=ser_default) |
Serialize a boxed object to or from a stream. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from utl::FlagsMI | |
FlagsMI () | |
Constructor. More... | |
virtual | ~FlagsMI () |
Destructor. More... | |
void | copyFlags (const FlagsMI &rhs) |
Copy the given flags. More... | |
void | copyFlags (const FlagsMI &rhs, uint_t lsb, uint_t msb) |
Copy (some of) the given flags. More... | |
void | copyFlags (uint64_t flags, uint_t lsb, uint_t msb) |
Copy (some of) the given flags. More... | |
bool | getFlag (uint_t flagNum) const |
Get a user-defined flag. More... | |
void | setFlag (uint_t flagNum, bool val) |
Set a user-defined flag. More... | |
uint64_t | getFlagsNumber (uint64_t mask, uint64_t shift=0) |
Get a multi-bit value in the flags data (which is stored as one 64-bit integer). More... | |
void | setFlagsNumber (uint64_t mask, uint64_t shift, uint64_t num) |
Set a multi-bit value in the flags data (which is stored as one 64-bit integer). More... | |
uint64_t | getFlags () const |
Get the flags. More... | |
void | setFlags (uint64_t flags) |
Set the flags. More... | |
Thread of execution.
Thread's main purpose is to encapsulate the native OS's implementation of threads. A Thread object must always be created on the heap (via new
). When you create a thread, you can either create it in detached mode or in joinable mode. The Thread object for a detached thread will automatically be deleted when the thread terminates. The Thread object for a joinable thread will not be deleted until you've successfully join()'d on it.
|
virtual |
Get the key for this object.
The key for an object is used to re-start the comparison process when all overridden compare() have failed. Usually an object's key uniquely identifies the object, though it doesn't necessarily need to. By default, a class has no associated key.
Reimplemented from utl::Object.
Reimplemented in utl::NetServerClient.
|
static |
Get a handle to the current thread.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Cancel the thread.
After calling cancel(), a call to testCancel() will throw a ThreadCancelledEx.
Definition at line 78 of file Thread.h.
References utl::deInit(), and utl::init().
|
static |
Test for cancellation.
If the thread has been cancelled (with cancel()), throw a ThreadCancelledEx - causing termination of the thread.
void* utl::Thread::join | ( | bool | deleteSelf = true | ) |
Join on the thread.
The calling thread's execution will be blocked until the thread has terminated. You must make a single call to join() for each non-detached thread you create, or you will leak memory.
deleteSelf | (optional : true) override if you prefer to delete the object yourself |
|
pure virtual |
Run the thread.
run() is essentially the thread's main(); it does whatever the thread was created to do. You will need to override this virtual method in your derived class.
arg | user-defined thread parameter |
Implemented in utl::NetServerClient, and utl::NetServer.
void utl::Thread::start | ( | void * | arg = nullptr , |
bool | join = true |
||
) |
|
static |
Yield the processor to allow another thread to run.
|
virtual |
Clean up stored state in preparation for re-use.
Reimplemented in utl::NetServerClient.
|
static |
Return a newly created TLS key.
|
static |
Get the value of a key in TLS.
|
static |
Set the value of a key in TLS.
key | TLS key |
value | new value for the key in the calling thread |
randutils::mt19937_64_rng* utl::Thread::rng | ( | ) |
Get the random generator (initialize it if necessary).