Create a new thread of program control whose entry point will be the specified function, and which will be passed the specified userData as its sole argument, and load into the specified handle an identifier that may be used to refer to this thread in calls to other ThreadUtil methods. Optionally specify attributes describing the properties for the new thread. If attributes is not supplied, a default ThreadAttributes object is used. Use the global allocator to supply memory. Return 0 on success, and a non‐zero value otherwise. bslmt::Configuration is used to determine the created thread's default stack‐size if either attributes is not supplied or if attributes.stackSize() has the unset value. The behavior is undefined unless attributes, if specified, has a stackSize that is either greater than 0 or e_UNSET_STACK_SIZE. Note that unless the created thread is explicitly "detached" (by invoking the detach class method with handle) or the k_CREATE_DETACHED attribute is specified, a call to join must be made to reclaim any system resources associated with the newly‐created thread. Also note that users are encouraged to either explicitly provide a stack size attribute, or configure a bslmt‐wide default using bslmt::Configuration, because the default stack size is surprisingly small on some platforms.

Synopsis

Declared in <bslmt_threadutil.h>

static
int
create(
    Handle* handle,
    ThreadFunction function,
    void* userData);

Created with MrDocs