Namespaces
Variants
Views
Actions

Difference between revisions of "cpp/thread/thread"

From cppreference.com
< cpp‎ | thread
(Version info fix: std::thread was standardized in C++14, not C++11)
m (fmt, .)
 
(28 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 
{{cpp/title|thread}}
 
{{cpp/title|thread}}
 
{{cpp/thread/thread/navbar}}
 
{{cpp/thread/thread/navbar}}
{{ddcl | header=thread | since=c++14 |
+
{{ddcl|header=thread|since=c++11|
 
class thread;
 
class thread;
 
}}
 
}}
Line 7: Line 7:
 
The class {{tt|thread}} represents [[enwiki:Thread_(computing)|a single thread of execution]]. Threads allow multiple functions to execute concurrently.  
 
The class {{tt|thread}} represents [[enwiki:Thread_(computing)|a single thread of execution]]. Threads allow multiple functions to execute concurrently.  
  
Threads begin execution immediately upon construction of the associated thread object (pending any OS scheduling delays), starting at the top-level function provided as a [[cpp/thread/thread/thread|constructor argument]]. The return value of the top-level function is ignored and if it terminates by throwing an exception, {{lc|std::terminate}} is called. The top-level function may communicate its return value or an exception to the caller via {{lc|std::promise}} or by modifying shared variables (which may require synchronization, see {{lc|std::mutex}} and {{lc|std::atomic}})
+
Threads begin execution immediately upon construction of the associated thread object (pending any OS scheduling delays), starting at the top-level function provided as a [[cpp/thread/thread/thread|constructor argument]]. The return value of the top-level function is ignored and if it terminates by throwing an exception, {{lc|std::terminate}} is called. The top-level function may communicate its return value or an exception to the caller via {{lc|std::promise}} or by modifying shared variables (which may require synchronization, see {{lc|std::mutex}} and {{lc|std::atomic}}).
  
 
{{tt|std::thread}} objects may also be in the state that does not represent any thread (after default construction, move from, {{lc|detach}}, or {{lc|join}}), and a thread of execution may not be associated with any {{tt|thread}} objects (after {{lc|detach}}).
 
{{tt|std::thread}} objects may also be in the state that does not represent any thread (after default construction, move from, {{lc|detach}}, or {{lc|join}}), and a thread of execution may not be associated with any {{tt|thread}} objects (after {{lc|detach}}).
Line 15: Line 15:
 
===Member types===
 
===Member types===
 
{{dsc begin}}
 
{{dsc begin}}
{{dsc hitem | Member type | Definition}}
+
{{dsc hitem|Member type|Definition}}
{{dsc inc | cpp/thread/dsc native_handle_type | thread}}
+
{{dsc inc|cpp/thread/dsc native_handle_type|thread}}
 
{{dsc end}}
 
{{dsc end}}
  
 
===Member classes===
 
===Member classes===
 
{{dsc begin}}
 
{{dsc begin}}
{{dsc inc | cpp/thread/thread/dsc id}}
+
{{dsc inc|cpp/thread/thread/dsc id}}
 
{{dsc end}}
 
{{dsc end}}
  
 
===Member functions===
 
===Member functions===
 
{{dsc begin}}
 
{{dsc begin}}
{{dsc inc | cpp/thread/thread/dsc constructor}}
+
{{dsc inc|cpp/thread/thread/dsc constructor}}
{{dsc inc | cpp/thread/thread/dsc destructor}}
+
{{dsc inc|cpp/thread/thread/dsc destructor}}
{{dsc inc | cpp/thread/thread/dsc operator{{=}}}}
+
{{dsc inc|cpp/thread/thread/dsc operator{{=}}}}
  
{{dsc h2 | Observers}}
+
{{dsc h2|Observers}}
{{dsc inc | cpp/thread/thread/dsc joinable | thread}}
+
{{dsc inc|cpp/thread/thread/dsc joinable|thread}}
{{dsc inc | cpp/thread/thread/dsc get_id | thread}}
+
{{dsc inc|cpp/thread/thread/dsc get_id|thread}}
{{dsc inc | cpp/thread/thread/dsc native_handle | thread}}
+
{{dsc inc|cpp/thread/thread/dsc native_handle|thread}}
{{dsc inc | cpp/thread/thread/dsc hardware_concurrency | thread}}
+
{{dsc inc|cpp/thread/thread/dsc hardware_concurrency|thread}}
  
{{dsc h2 | Operations}}
+
{{dsc h2|Operations}}
{{dsc inc | cpp/thread/thread/dsc join | thread}}
+
{{dsc inc|cpp/thread/thread/dsc join|thread}}
{{dsc inc | cpp/thread/thread/dsc detach | thread}}
+
{{dsc inc|cpp/thread/thread/dsc detach|thread}}
{{dsc inc | cpp/thread/thread/dsc swap | thread}}
+
{{dsc inc|cpp/thread/thread/dsc swap|thread}}
 
{{dsc end}}
 
{{dsc end}}
  
 
===Non-member functions===
 
===Non-member functions===
 
{{dsc begin}}
 
{{dsc begin}}
{{dsc inc | cpp/thread/thread/dsc swap2 | thread}}
+
{{dsc inc|cpp/thread/thread/dsc swap2|thread}}
 
{{dsc end}}
 
{{dsc end}}
  
 
===See also===
 
===See also===
 
{{dsc begin}}
 
{{dsc begin}}
{{dsc inc | cpp/thread/dsc jthread}}
+
{{dsc inc|cpp/thread/dsc jthread}}
 
{{dsc end}}
 
{{dsc end}}
  
 
{{langlinks|de|es|fr|it|ja|pt|ru|zh}}
 
{{langlinks|de|es|fr|it|ja|pt|ru|zh}}

Latest revision as of 01:41, 24 October 2023

 
 
Concurrency support library
Threads
thread
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
(C++11)
Generic lock management
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
(C++11)
Safe Reclamation
(C++26)
Hazard Pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11)(deprecated in C++20)
(C++11)(deprecated in C++20)
Memory ordering
Free functions for atomic operations
Free functions for atomic flags
 
 
Defined in header <thread>
class thread;
(since C++11)

The class thread represents a single thread of execution. Threads allow multiple functions to execute concurrently.

Threads begin execution immediately upon construction of the associated thread object (pending any OS scheduling delays), starting at the top-level function provided as a constructor argument. The return value of the top-level function is ignored and if it terminates by throwing an exception, std::terminate is called. The top-level function may communicate its return value or an exception to the caller via std::promise or by modifying shared variables (which may require synchronization, see std::mutex and std::atomic).

std::thread objects may also be in the state that does not represent any thread (after default construction, move from, detach, or join), and a thread of execution may not be associated with any thread objects (after detach).

No two std::thread objects may represent the same thread of execution; std::thread is not CopyConstructible or CopyAssignable, although it is MoveConstructible and MoveAssignable.

Contents

[edit] Member types

Member type Definition
native_handle_type (optional*) implementation-defined[edit]

[edit] Member classes

represents the id of a thread
(public member class) [edit]

[edit] Member functions

constructs new thread object
(public member function) [edit]
destructs the thread object, underlying thread must be joined or detached
(public member function) [edit]
moves the thread object
(public member function) [edit]
Observers
checks whether the thread is joinable, i.e. potentially running in parallel context
(public member function) [edit]
returns the id of the thread
(public member function) [edit]
returns the underlying implementation-defined thread handle
(public member function) [edit]
returns the number of concurrent threads supported by the implementation
(public static member function) [edit]
Operations
waits for the thread to finish its execution
(public member function) [edit]
permits the thread to execute independently from the thread handle
(public member function) [edit]
swaps two thread objects
(public member function) [edit]

[edit] Non-member functions

specializes the std::swap algorithm
(function) [edit]

[edit] See also

(C++20)
std::thread with support for auto-joining and cancellation
(class) [edit]