std::thread
thread类表示各个线程的执行。
在多线程环境下,一个线程和其余线程同时执行指令序列,并共享地址空间。
一个被初始化的线程对象表明一个正在执行的线程。好比一个线程对象是可链接的,它有一个惟一的线程ID。
一个默认的没有初始化的线程对象不是可连接的,它的线程ID时和其余没有可链接的线程公用的。
一个可连接的线程变为不可连接的线程或者当对它调用join或者detach。
Member types
-
id
-
Thread id
(public member type )
-
native_handle_type
-
Native handle type
(public member type )
Member functions
-
(constructor)
-
Construct thread
(public member function )
-
(destructor)
-
Thread destructor
(public member function )
-
operator=
-
Move-assign thread
(public member function )
-
get_id
-
Get thread id
(public member function )
-
joinable
-
Check if joinable
(public member function )
-
join
-
Join thread
(public member function )
-
detach
-
Detach thread
(public member function )
-
swap
-
Swap threads
(public member function )
-
native_handle
-
Get native handle
(public member function )
-
hardware_concurrency [static]
-
Detect hardware concurrency
(public static member function )
Non-member overloads
-
swap (thread)
-
Swap threads
(function )
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
// thread example
#include <iostream> // std::cout
#include <thread> // std::thread
void foo()
{
// do stuff...
}
void bar(int x)
{
// do stuff...
}
int main()
{
std::thread first (foo); // spawn new thread that calls foo()
std::thread second (bar,0); // spawn new thread that calls bar(0)
std::cout << "main, foo and bar now execute concurrently...\n";
// synchronize threads:
first.join(); // pauses until first finishes
second.join(); // pauses until second finishes
std::cout << "foo and bar completed.\n";
return 0;
} |
|
Output:
main, foo and bar now execute concurrently...
foo and bar completed.
|