一个简单的并发编程的举例

#include <iostream>

#include <thread>

using namespace std;

void hello(){

  cout << "Hello Concurrent World\n";

}

int main(){

  thread t(hello);

  t.join();

  return 0;

}

编译指令为g++ -o test <C++文件名> -std=c++11 -lpthread

头文件thread,管理线程和类在<thread>中声明。

其次,打印信息的代码被移动到了一个独立的函数hello中,因为每个线程都必须具有一个初始函数,线程的执行从这里开始。在上面的例子中线程std::thread的对象拥有新函数hello()作为其初始函数。

第三,join()函数是等所有线程结束,然后结束初始进程结束,如果没有这个函数,将导致进程混乱。这个时候两种处理方式。

1等待线程完成,则是t.join();

2让线程继续工作,初始线程结束,这需要将线程分离,所以就要用t.detach()

注意点:

1、注意声明:std::thread my_thread(background_task())

这里相当于声明了一个名为my_thread的函数,这个函数带有一个参数(函数指针指向没有参数并返回background_task对象的函数),返回一个std::thread对象的函数,而不是启动了一个线程

要是启动线程,则有下面两种方式

thread my_thread((background_task()));

thread my_thread{background_task()}

最新文章

  1. RBAC用户权限管理数据库设计
  2. “胡”说IC——菜鸟工程师完美进阶
  3. JsonConvert 使用注意事项之 Serializable
  4. 项目分享五:H5图片压缩与上传
  5. Bus Hound 的使用方法
  6. Oracle sysdate 时间加减
  7. Ubuntu常用命令大全(转)
  8. jquery选择器效率优化问题
  9. spring中Bean的注入类型
  10. ThinkPHP表单令牌验证功能详细介绍
  11. 免费WiFi,仅仅为好久没联系的你们
  12. .Net程序员 Solr-5.3之旅 (三)Solr 从MSSQ导入索引数据
  13. mysql基础之存储引擎
  14. Java集合ArrayList源码解读
  15. XAF-通知模块概述 web+win
  16. 详解iBaits中SqlMapClientTemplate的使用
  17. 528. Random Pick with Weight index的随机发生器
  18. 《java并发编程实战》
  19. finecms如何控制调用子栏目的数量
  20. ubuntu16.04下sublime text 3之安装和配置

热门文章

  1. 暑假撸系统5- Thymeleaf 常用标签的
  2. Python语法进阶(2)- 正则表达式
  3. systemd配置文件填写了ExecStop=/usr/bin/kill -9 $MAINPID之后重启在messages发生了报错
  4. PostgreSQL VACUUM 之深入浅出 (三)
  5. python数据结构:数组和列表
  6. 选择自助式BI平台的六大标准
  7. 【C#IO 操作】stream 字节流|字符流 |比特流
  8. 二叉树的N中遍历方式和拓展应用
  9. Apache Ranger 编译安装部署
  10. VSCode空格变成虚点