博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++11线程指南(2)--Lambda线程实现
阅读量:4071 次
发布时间:2019-05-25

本文共 1003 字,大约阅读时间需要 3 分钟。

目录


1.线程使用lambda函数

  基于前一章中的Lambda程序,我们进行了扩展,当前创建5个线程。

#include
#include
#include
#include
int main(){ std::vector
threadVec; for(int i=0; i<5; ++i){ threadVec.push_back(std::thread([]() { std::cout<<"thread function\n"; })); } std::cout<<"main thread\n"; std::for_each(threadVec.begin(), threadVec.end(), [](std::thread & thr) { thr.join(); }); return 0;}

  运行结果为:

  thread function
  thread function
  thread function
  main thread
  thread function
  thread function

2.并发程序的特性

  上述运行结果中,无法确定是哪个线程打印出了哪个结果。所以下面程序中插入一个标记。

for(int i=0; i<5; ++i){		threadVec.push_back(std::thread([i]() 		{			std::cout<<"thread function "<<<"\n";		}));	}	std::cout<<"main thread\n";

  得到的结果是:

  thread function 0
  thread function 3
  main thread
  thread function 2
  thread function 1
  thread function 4
  或者
  thread function 0
  thread function 1
  thread function main thread
  3
  thread function 4
  thread function 2
  从中可以看到,多线程并发有着天然的不确定性。每次运行都可以得到不同的结果。调度器可以在任意的时间被中断。

转载地址:http://zmeji.baihongyu.com/

你可能感兴趣的文章
项目导入时报错:The import javax.servlet.http.HttpServletRequest cannot be resolved
查看>>
linux对于没有写权限的文件如何保存退出vim
查看>>
Windows下安装ElasticSearch6.3.1以及ElasticSearch6.3.1的Head插件
查看>>
IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结
查看>>
【IntelliJ IDEA】idea导入项目只显示项目中的文件,不显示项目结构
查看>>
ssh 如何方便的切换到其他节点??
查看>>
JSP中文乱码总结
查看>>
Java-IO-File类
查看>>
Java-IO-java的IO流
查看>>
Java-IO-输入/输出流体系
查看>>
Java实现DES加密解密
查看>>
HTML基础
查看>>
Java IO
查看>>
Java NIO
查看>>
Java大数据:Hbase分布式存储入门
查看>>
Java大数据:全文搜索引擎Elasticsearch入门
查看>>
大数据学习:Hadoop入门学习书单
查看>>
大数据学习:Spark SQL入门简介
查看>>
大数据学习:Spark RDD操作入门
查看>>
大数据框架:Spark 生态实时流计算
查看>>