Backto C/C++ Index
<thread>
当然就是负责 thread 的创建,运行和销毁了.
// 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;
}
创建
std::thread awesome_thread(function, args);
join()
这个 join()
虽然是this_thread
的一个成员函数, 但是却是在 another_thread
中调用的, 是 another_thread
let this_thread
join. 其作用就是让 other_thread
pause, 等待 this_thread
执行完再继续. 比如上面例子中的两个 join, 就是 main_thread
让 first_thread
和 second_thread
join 进来, 等这两个 thread 执行完后才进行下面的语句. 其中, first_thread
和 second_thread
是 synchronized(同步)的.
joinable(): 一个thread是否可以join进来
Check if joinable
Returns whether the thread object is joinable.
A thread object is joinable if it represents a thread of execution.
A thread object is not joinable in any of these cases:
- if it was default-constructed.
- if it has been moved from (either constructi