简单了解C++11后对多线程的支持
但在C++11之后增加了<thread>、<mutex>、<atomic>、<future>等头文件,支持了多线程。
例如:
#include <iostream>
#include <thread>
void function_1()
{
std::cout << "这是function_1()" << std::endl;
}
void function_2()
{
std::cout << "这是function_2()" << std::endl;
}
void function_3()
{
std::cout << "这是function_3()" << std::endl;
}
int main(void)
{
std::thread t1(function_1);
std::thread t2(function_2);
std::thread t3(function_3);
t1.join();
t2.join();
t3.join();
std::cout<<"这是主线程"<<std::endl;
return 0;
}
运行结果如下:
这是function_3()
这是function_2()
这是function_1()
这是主线程
例如:
#include <iostream>
#include <thread>
#include <vector>
int main(void)
{
std::vector<std::thread> threads;
for(int i = 0; i < 3; ++i)
{
threads.push_back(std::thread( []() { std::cout << "结合Lambda表达式的线程"<< std::this_thread::get_id() << std::endl; } ) );
}
for(auto& thread : threads)
{
thread.join();
}
std::cout<<"这是主线程"<<" " <<std::this_thread::get_id() <<std::endl;
return 0;
}
运行结果如下:
结合Lambda表达式的线程47023317341952
结合Lambda表达式的线程47023315240704
结合Lambda表达式的线程47023313139456
这是主线程 47023291705280