CARVIEW |
Select Language
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 22 Jul 2025 23:11:59 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Location: /reference/thread/thread/thread/
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 22 Jul 2025 23:12:00 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
ETag: W/"81da-06g1/mwhD/lly8QyGBPTjRH+cxs"
Content-Encoding: gzip
Constructs a thread object:
thread objects that are joinable shall either be joined or detached before they are destroyed.
Output:
It also throws if the construction of any of the copies it makes (of the decay types of Fn and Args...) throws.
Depending on the library implementation, this constructor may also throw exceptions to report other situations (such as bad_alloc or system_error with other error conditions).
Note that if an exception is thrown from the function invocation (i.e., from fn itself), it is handled by the new thread. If this invocation terminates with an uncaught exception,
Reference
C library:
- <cassert> (assert.h)
- <cctype> (ctype.h)
- <cerrno> (errno.h)
-
<cfenv> (fenv.h)C++11
- <cfloat> (float.h)
-
<cinttypes> (inttypes.h)C++11
- <ciso646> (iso646.h)
- <climits> (limits.h)
- <clocale> (locale.h)
- <cmath> (math.h)
- <csetjmp> (setjmp.h)
- <csignal> (signal.h)
- <cstdarg> (stdarg.h)
-
<cstdbool> (stdbool.h)C++11
- <cstddef> (stddef.h)
-
<cstdint> (stdint.h)C++11
- <cstdio> (stdio.h)
- <cstdlib> (stdlib.h)
- <cstring> (string.h)
-
<ctgmath> (tgmath.h)C++11
- <ctime> (time.h)
-
<cuchar> (uchar.h)C++11
- <cwchar> (wchar.h)
- <cwctype> (wctype.h)
Containers:
-
<array>C++11
- <deque>
-
<forward_list>C++11
- <list>
- <map>
- <queue>
- <set>
- <stack>
-
<unordered_map>C++11
-
<unordered_set>C++11
- <vector>
-
Input/Output:
Multi-threading:
-
<atomic>C++11
-
<condition_variable>C++11
-
<future>C++11
-
<mutex>C++11
-
<thread>C++11
-
Other:
- <algorithm>
- <bitset>
-
<chrono>C++11
-
<codecvt>C++11
- <complex>
- <exception>
- <functional>
-
<initializer_list>C++11
- <iterator>
- <limits>
- <locale>
- <memory>
- <new>
- <numeric>
-
<random>C++11
-
<ratio>C++11
-
<regex>C++11
- <stdexcept>
- <string>
-
<system_error>C++11
-
<tuple>C++11
-
<type_traits>C++11
-
<typeindex>C++11
- <typeinfo>
- <utility>
- <valarray>
<thread>
classes
-
threadC++11
-
namespaces
-
this_threadC++11
-
thread
-
thread::~threadC++11
-
thread::threadC++11
member functions
-
thread::detachC++11
-
thread::get_idC++11
-
thread::joinC++11
-
thread::joinableC++11
-
thread::native_handleC++11
-
thread::operator=C++11
-
thread::swapC++11
-
member types
-
thread::idC++11
-
thread::native_handle_typeC++11
-
static member functions
non-member overloads
-
swap (thread)C++11
-
public member function
<thread>
std::thread::thread
default (1) | thread() noexcept; |
---|---|
initialization (2) | template <class Fn, class... Args>explicit thread (Fn&& fn, Args&&... args); |
copy [deleted] (3) | thread (const thread&) = delete; |
move (4) | thread (thread&& x) noexcept; |
Construct thread
- (1) default constructor
- Construct a thread object that does not represent any thread of execution.
- (2) initialization constructor
- Construct a thread object that represents a new joinable thread of execution.
The new thread of execution calls fn passing args as arguments (using decay copies of its lvalue or rvalue references).
The completion of this construction synchronizes with the beginning of the invocation of this copy of fn.
- (3) copy constructor
- Deleted constructor form (thread objects cannot be copied).
- (4) move constructor
- Construct a thread object that acquires the thread of execution represented by x (if any). This operation does not affect the execution of the moved thread in any way, it simply transfers its handler.
The x object no longer represents any thread of execution.
thread objects that are joinable shall either be joined or detached before they are destroyed.
Parameters
- fn
- A pointer to function, pointer to member, or any kind of move-constructible function object (i.e., an object whose class defines operator(), including closures and function objects).
The return value (if any) is ignored.
- args...
- Arguments passed to the call to fn (if any). Their types shall be move-constructible.
If fn is a member pointer, the first argument shall be an object for which that member is defined (or a reference, or a pointer to it).
- x
- thread object whose state is moved to the constructed object.
Fn
and Args...
are template parameters: if implicitly deduced, these are the proper lvalue or rvalue reference type to bind the arguments to. Note though, that on the call to fn in the new thread, decay copies of fn and args... are always used (see std::ref for a wrapper class that makes references copyable).Example
|
|
Output:
increase global counter using 10 threads... increase counter (foo) with 10 threads using reference... increase counter (bar) with 10 threads using member... synchronizing all threads... global_counter: 10000 foo: 10000 bar: 10000 |
Data races
The move constructor (4) modifies x.Exception safety
The initialization constructor (2) throws an exception on the following conditions:exception type | error condition | description |
---|---|---|
system_error | errc::resource_unavailable_try_again | The system is unable to start a new thread |
Depending on the library implementation, this constructor may also throw exceptions to report other situations (such as bad_alloc or system_error with other error conditions).
Note that if an exception is thrown from the function invocation (i.e., from fn itself), it is handled by the new thread. If this invocation terminates with an uncaught exception,
terminate()
is called.See also
- thread::operator=
- Move-assign thread (public member function)
- thread::join
- Join thread (public member function)
Home page | Privacy policy
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us
© cplusplus.com, 2000-2025 - All rights reserved - v3.3.4s
Spotted an error? contact us