Thread

Thread functions.

dmThread::New(thread_start, stack_size, arg, name)

create a new thread

Create a new named thread

PARAMETERS

thread_start - Thread entry function

stack_size - Stack size

arg - Thread argument

name - Thread name

RETURN

Thread - 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);
}


dmThread::Join(thread)

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


dmThread::Detach(thread)

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

Allocate thread local storage key

RETURN

Key -


dmThread::FreeTls(key)

free thread local storage key

Free thread local storage key

PARAMETERS

key - Key


dmThread::SetTlsValue(key, value)

set thread specific data

Set thread specific data

PARAMETERS

key - Key

value - Value


dmThread::GetTlsValue(key)

get thread specific data

Get thread specific data

PARAMETERS

key - Key


dmThread::GetCurrentThread()

gets the current thread

Gets the current thread

RETURN

the - current thread


dmThread::SetThreadName(thread, name)

sets the current thread name

Sets the current thread name

PARAMETERS

thread - the thread

name - the thread name