Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1846923
  • 博文数量: 184
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2388
  • 用 户 组: 普通用户
  • 注册时间: 2016-12-21 22:26
个人简介

90后空巢老码农

文章分类

全部博文(184)

文章存档

2021年(26)

2020年(56)

2019年(54)

2018年(47)

2017年(1)

我的朋友

分类: C/C++

2020-11-25 10:43:58

在c++11当中,大佬们终于承认了“线程的存在”,这就意味着,支持c++11的编译器,需要把os关于底层的线程的实现进行封装,从而给程序员们提供一个统一的api。
在c++11当中,要是想用线程相关的东西,需要引用新的头文件。举个helloworld的栗子:


点击(此处)折叠或打开

  1. #include <iostream>
  2. #include <thread>

  3. void func(){
  4.     std::cout<<"Hello world~"<<std::endl;
  5. }
  6. int main(int argc, char** argv) {
  7.     std::thread t(func);
  8.     t.join();
  9.     return 0;
  10. }
这里thread的一个实例t,初始化的时候要给它一个可调用类型(callable)类型,以便其开展工作,所以,除了函数之外,我们还可以将一个带有函数调用操作符的类的实例传递给std::thread的构造函数,如下:

点击(此处)折叠或打开

  1. #include <iostream>
  2. #include <thread>

  3. class task{
  4. public:
  5.     void operator()() const{
  6.         do_func1();
  7.         do_func2();
  8.     }
  9.     void do_func1()const{ std::cout<<"func1"<<std::endl;}
  10.     void do_func2()const{ std::cout<<"func2"<<std::endl;}
  11. };
  12. int main(int argc, char** argv) {
  13.     task f;
  14.     std::thread my_thread(f);
  15.     my_thread.join();
  16.     return 0;
  17. }

阅读(878) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~