[#BloombergLP-bslmt-ThreadUtilImpl-04-create-08] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslmt.adoc[bslmt]::xref:BloombergLP/bslmt/ThreadUtilImpl-04.adoc[ThreadUtilImpl<Platform::PosixThreads>]::create :relfileprefix: ../../../ :mrdocs: Create a thread with the specified attributes and entry‐point function. == Synopsis Declared in `<bslmt_threadutilimpl_pthread.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- static int create( xref:BloombergLP/bslmt/ThreadUtilImpl-04/Handle.adoc[Handle]* threadHandle, xref:BloombergLP/bslmt/ThreadAttributes.adoc[ThreadAttributes] const& attributes, xref:BloombergLP/bslmt_ThreadFunction.adoc[bslmt_ThreadFunction] function, void* userData); ---- == Description Create a new thread of program control having the specified `attributes` that invokes the specified `function` with a single argument specified by `userData`, and load into the specified `threadHandle` an identifier that may be used to refer to the thread in future calls to this utility. Return 0 on success, and a non‐zero value otherwise. The behavior is undefined if the specified `thread` is 0 or if `attributes.stackSize()` has been set to a negative value other than the unset value. Note that unless explicitly "detached" (by `detach`), or unless the `BSLMT_CREATE_DETACHED` attribute is specified, a call to `join` must be made once the thread terminates to reclaim any system resources associated with the newly created identifier. == Return Value 0 on success, and a non‐zero value otherwise == Parameters [cols="1,4"] |=== | Name| Description | *threadHandle* | receives an identifier for the new thread | *attributes* | properties for the new thread | *function* | entry‐point function invoked by the new thread | *userData* | sole argument passed to `function` |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#