多线程编程1

本文深入探讨了C++线程库的使用方法,重点介绍了如何通过std::thread对象启动和管理线程,包括线程的初始化、启动、等待和分离等关键操作,以及线程安全的注意事项。
  1. 管理线程的函数和类在< thread >中声明,而保护共享数据的函数和类在其他头文件中声明
  2. 每个线程都必须有一个初始函数,新线程的执行从这里开始。对于应用程序来说,初始线程是main(),但是对于其他线程,可以在std::thread对象的构造函数中指定,本例中,被命名为t的std::thread对象拥有新函数hello()作为其初始函数
  3. 与直接写入标准输出或是从main()调用hello()不同,该程序启动了一个全新的线程来实现,将线程数量一分为二——初始线程始于main(),而新线程始于hello()。
  4. 新的线程启动之后,初始线程继续执行。如果它不等待新线程结束,它就将自顾自地继续运行到main()的结束,从而结束程序——有可能发生在新线程运行之前。这就是为什么在这里调用 join() 的原因——这会导致调用线程(在main()中)等待与 std::thread 对象相关联的线程,即这个例子中的t
    #include<iostream>
    #include<thread>
    using namespace std;
    void hello()
    {
    	cout << "hello consurrent world\n";
    }
    int main()
    {
    	thread t(hello);
    	t.join();
    	system("pause");
    	return 0;
    }
    
    1. 使用C++线程库启动线程,可以归结为构造 std::thread 对象:
    void do_some_work();
    std::thread my_thread(do_some_work);
    
    1. join(),阻塞主线程,主线程等待该线程执行完再执行
    2. detach(),分离线程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值