Namespace: | dmThread |
Include: | #include <dmsdk/dlib/thread.h> |
FUNCTIONS | |
---|---|
dmThread::New( thread_start, stack_size, arg, name) | create a new thread |
void dmThread::Join( thread) | join thread |
void dmThread::Detach( thread) | detach thread |
dmThread::AllocTls() | allocate thread local storage key |
void dmThread::FreeTls( key) | free thread local storage key |
void dmThread::SetTlsValue( key, value) | set thread specific data |
void dmThread::GetTlsValue( key) | get thread specific data |
dmThread::GetCurrentThread() | gets the current thread |
void dmThread::SetThreadName( thread, name) | sets the current thread name |
dmThread::New( thread_start, stack_size, arg, name)
Create a new named thread
PARAMETERS
|
thread_start |
Thread entry function |
|
stack_size |
Stack size |
|
arg |
Thread argument |
|
name |
Thread name |
RETURNS
|
handle |
EXAMPLES
Create a thread#include <stdio.h>
#include <dmsdk/dlib/thread.h>
struct Context
{
bool m_DoWork;
int m_Work;
};
static void Worker(void* _ctx)
{
Context* ctx = (Context*)_ctx;
while (ctx->m_DoWork)
{
ctx->m_Work++; // do work
dmTime::Sleep(10*1000); // yield
}
}
int StartThread()
{
Context ctx;
ctx.m_DoWork = true;
ctx.m_Work = 0;
dmThread::Thread thread = dmThread::New(Worker, 0x80000, (void*)&ctx, "my_thread");
// do other work...
// ..eventually stop the thread:
ctx.m_DoWork = false;
// wait for thread
dmThread::Join(thread);
printf("work done: %d\n", ctx.m_Work);
}
void dmThread::Join( thread)
Join thread. Waits for the thread specified by thread to terminate. If that thread has already terminated, then Join() returns immediately. The thread specified by thread must be joinable (see Detach()).
PARAMETERS
|
thread |
Thread to join |
void dmThread::Detach( thread)
Detach thread. When a detached thread terminates, its resources are automatically released back to the system without the need for another thread to join with the terminated thread.
PARAMETERS
|
thread |
Thread to detach |
dmThread::AllocTls()
Allocate thread local storage key
PARAMETERS
RETURNS
|
void dmThread::FreeTls( key)
Free thread local storage key
PARAMETERS
|
key |
Key |
void dmThread::SetTlsValue( key, value)
Set thread specific data
PARAMETERS
|
key |
Key |
|
value |
Value |
void dmThread::GetTlsValue( key)
Get thread specific data
PARAMETERS
|
key |
Key |
dmThread::GetCurrentThread()
Gets the current thread
PARAMETERS
RETURNS
|
current thread |
void dmThread::SetThreadName( thread, name)
Sets the current thread name
PARAMETERS
|
thread |
the thread |
|
name |
the thread name |