OGRE-Next: Ogre::Threads Class Reference

| OGRE-Next 3.0.0 Object-Oriented Graphics Rendering Engine

Loading...
Searching...
No Matches
Static Public Member Functions | List of all members
Ogre::Threads Class Reference

`#include <OgreThreads.h>`

## Static Public Member Functions
static ThreadHandlePtr | CreateThread (THREAD_ENTRY_POINT entryPoint, size_t threadIdx, void *param)
| Creates and executes a new thread.
static bool | CreateTls (TlsHandle *outTls)
| Allocates a Thread Local Storage handle to use.
static void | DestroyTls (TlsHandle tlsHandle)
| Destroys a Thread Local Storage handle created with CreateTls.
static void * | GetTls (TlsHandle tlsHandle)
static void | SetTls (TlsHandle tlsHandle, void *value)
static void | Sleep (uint32 milliseconds)
| Sleeps for a minimum of the specified time of milliseconds.
static void | WaitForThreads (const ThreadHandleVec &threadHandles)
static void | WaitForThreads (size_t numThreadHandles, const ThreadHandlePtr *threadHandles)
| Waits until all threads are finished.

## Member Function Documentation

## ◆ CreateThread()

static ThreadHandlePtr Ogre::Threads::CreateThread | ( | THREAD_ENTRY_POINT | entryPoint,
|  | size_t | threadIdx,
|  | void * | param )
| static

Creates and executes a new thread.

Remarks
  The function to execute must be declared via THREAD_DECLARE, and the first argument must be provided through THREAD_GET. The following example shows how to use:

unsigned long myOwnThread( ThreadHandle *ownThreadHandle ) { Should print "Hello from thread 50" printf( "Hello from thread %i", ownThreadHandle.getThreadIdx() ); return 0; } THREAD_DECLARE( myOwnThread );

int main() { ThreadHandle handle = CreateThread( THREAD_GET( myOwnThread ), 50, 0 ); WaitForThreads( 1, handle ); return 0; }

It is not possible to retrieve the return value of the function because it's not portable (and trying to emulate it induces to easy-to-cause memory leaks; as we're dealing with C functions + potential race conditions, not C++)

Parameters

  entryPoint | Function name of the entry point. VERY IMPORTANT: The entry point must be provided by THREAD_GET. Do not use a function directly, otherwise there will be memory leaks!
  threadIdx | Optional index for this thread (ie. when you have many worker threads to work on a section of data.
  param | Optional argument to be passed.

Returns
  Handle to created thread.

## ◆ CreateTls()

static bool Ogre::Threads::CreateTls | ( | TlsHandle * | outTls | ) |
| static

Allocates a Thread Local Storage handle to use.

Parameters

  outTls | [out] Handle to TLS. On failure this handle is set to OGRE_TLS_INVALID_HANDLE

Returns
  True on success, false on failure. TLS allocation can fail if the system ran out of handles, or it ran out of memory.

## ◆ DestroyTls()

static void Ogre::Threads::DestroyTls | ( | TlsHandle | tlsHandle | ) |
| static

Destroys a Thread Local Storage handle created with CreateTls.

Parameters

  tlsHandle | Handle to destroy

## ◆ GetTls()

static void * Ogre::Threads::GetTls | ( | TlsHandle | tlsHandle | ) |
| static

## ◆ SetTls()

static void Ogre::Threads::SetTls | ( | TlsHandle | tlsHandle,
|  | void * | value )
| static

## ◆ Sleep()

static void Ogre::Threads::Sleep | ( | uint32 | milliseconds | ) |
| static

Sleeps for a minimum of the specified time of milliseconds.

Actual time spent sleeping may vary widely depending on OS and other variables. Do not feed 0.

## ◆ WaitForThreads() [1/2]

static void Ogre::Threads::WaitForThreads | ( | const ThreadHandleVec & | threadHandles | ) |
| static

## ◆ WaitForThreads() [2/2]

static void Ogre::Threads::WaitForThreads | ( | size_t | numThreadHandles,
|  | const ThreadHandlePtr * | threadHandles )
| static

Waits until all threads are finished.

Parameters

  numThreadHandles | Number of ThreadHandle passed in the array as 'threadHandles'
  threadHandles | Array of numThreadHandles or more ThreadHandle

Remarks
  Don't pass more than 128 handles per call

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

- OgreThreads.h