C++11多线程

2018-07-17  本文已影响0人  _gentle

C++11提供了语言级别的多线程,使得多线程编程可移植性提高。使用多线程需要包含头文件#include<thread>

创建线程

要注意线程对象的生命周期要大于线程,这可以用join实现。或者使用detach将线程在后台运行。

#include<iostream>
#include<thread>
#include<chrono>
void f(int n) {
    std::cout << "thread create2" << std::endl;
    std::cout << "n=" << n << std::endl;
    std::this_thread::sleep_for(std::chrono::seconds(3));//获取执行该代码的当前线程 

    std::cout << "end of t2" << std::endl;
}
int main() {    
    std::thread t([]{std::cout << "thread create" << std::endl;});
    std::cout << t.get_id() << std::endl;//获得当前执行id 
    t.join();//阻塞主进程,直到线程函数执行结束。

    std::thread t2(f, 2);
    t2.detach();//放到后台运行 
    
    std::cout << std::thread::hardware_concurrency() << std::endl; //获得CPU数
     
    std::cout << t2.get_id() << std::endl;//
    std::cout << "end of main" << std::endl;    
} 

上面的程序中还要注意的是

上一篇 下一篇

猜你喜欢

热点阅读