create overloads

Synopses

Declared in <bslmt_threadutil.h>

Create a new thread of program control whose entry point will invoke the specified function object, 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. function shall be a reference to a type, INVOKABLE, that can be copy‐constructed, and where the expression (void)function() will execute a function call (i.e., either a void()() function, or a functor object implementing void operator()()). 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.

template<class INVOKABLE>
static
int
create(
    Handle* handle,
    INVOKABLE const& function);

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.

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

Same as the preceding overload, with the specified attributes.

template<class INVOKABLE>
static
int
create(
    Handle* handle,
    ThreadAttributes const& attributes,
    INVOKABLE const& function);

Same as the preceding overload, using the specified attributes.

static
int
create(
    Handle* handle,
    ThreadAttributes const& attributes,
    ThreadFunction function,
    void* userData);

Created with MrDocs