[#BloombergLP-bslmt-ThreadUtil-create-0e7c]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslmt.adoc[bslmt]::xref:BloombergLP/bslmt/ThreadUtil.adoc[ThreadUtil]::create
:relfileprefix: ../../../
:mrdocs:

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&period; Optionally specify `attributes` describing the properties for the new thread&period; If `attributes` is not supplied, a default `ThreadAttributes` object is used&period; Use the global allocator to supply memory&period; Return 0 on success, and a non&hyphen;zero value otherwise&period; `bslmt&colon;&colon;Configuration` is used to determine the created thread&apos;s default stack&hyphen;size if either `attributes` is not supplied or if `attributes&period;stackSize()` has the unset value&period; The behavior is undefined unless `attributes`, if specified, has a `stackSize` that is either greater than 0 or `e&lowbar;UNSET&lowbar;STACK&lowbar;SIZE`&period; Note that unless the created thread is explicitly &quot;detached&quot; (by invoking the `detach` class method with `handle`) or the `k&lowbar;CREATE&lowbar;DETACHED` attribute is specified, a call to `join` must be made to reclaim any system resources associated with the newly&hyphen;created thread&period; Also note that users are encouraged to either explicitly provide a stack size attribute, or configure a `bslmt`&hyphen;wide default using `bslmt&colon;&colon;Configuration`, because the default stack size is surprisingly small on some platforms&period;

== Synopsis

Declared in `&lt;bslmt&lowbar;threadutil&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
static
int
create(
    xref:BloombergLP/bslmt/ThreadUtil/Handle.adoc[Handle]* handle,
    xref:BloombergLP/bslmt/ThreadUtil/ThreadFunction.adoc[ThreadFunction] function,
    void* userData);
----


[.small]#Created with https://www.mrdocs.com[MrDocs]#
