当前位置: 首页 > article >正文

异步读取以及lambda表达式

所谓同步,就是正常的程序逻辑,ABCDE,假如C是一个耗时的IO操作,系统就会在执行到C的时候,等候C完成。然后继续下去执行DE。

但是这样效率不高,所以出现了异步程序。也就是执行到C的时候,C直接返回了,然后继续执行DE;与此同时,C还在进行IO的操作。等耗时操作结束之后,再通知主程序结果,或者使用call back机制,再回调回来。

当然,这是最经典的一种异步的例子,异步还有很多各种应用场景,总之只要不是同步的,就都是异步的。
(比如asio的asyn_read_some,就是在执行到它时,马上就会返回,让主程序执行后面的命令。但是它自己却挂在后台,等候buffer中有东西可以读了,它再去执行自己的作用,再去读)


lambda表达式,基本上就是一个简易的函数。下面展示最简单的lambda的形式。

[OuterVar](int x, int y)->{
	return x + y;
}

这里的 OuterVar 是捕获的外部变量。默认的值引用就不用说了,还可以用传引用、或者新定义变量。比如:

int N = 100;
int M = 10;
auto g = [n, &M](int i){
	M = 20;
	return i*N;
}

这里M就会被改变,因为在外部捕获那里,它传引用进去了。

[&] 可以表示外部所有的变量都按传引用捕获;[=] 可以表示外部所有的变量都按值捕获。

另外,可以专门指定某个变量特例。比如 [&, =N],那就是所有变量都按引用捕获,只有N用值捕获。

最后,在C++14增加了一个新功能,也就是参数列表支持弱类型auto
比如可以这样写:

[](auto x, auto y)->{
	return x + y;
}

这样的话,只要是支持+运算的数据,都可以直接用这个函数了。比如string也可以直接用,不用局限于int。


http://www.kler.cn/a/798.html

相关文章:

  • Unity中UGUI的Button动态绑定引用问题
  • K8s证书过期
  • 【debug】
  • PDF书籍《手写调用链监控APM系统-Java版》第7章 插件与链路的结合:Tomcat插件实现
  • Go C编程 第6课 无人机 --- 计算旋转角
  • Qt creator ,语言家功能缺失解决方法
  • 数据分析:基于K-近邻(KNN)对Pima人糖尿病预测分析
  • Linux版本现状
  • 行人车辆检测与计数系统(Python+YOLOv5深度学习模型+清新界面)
  • 【每日一题】——矩阵相等判定
  • 重构函数-Remove Assignments to Parameters移除对参数的赋值动作七
  • HTML樱花飘落
  • 【Linux】进程管理之kill、killall、pkill
  • OpenAI GPT-4震撼发布:多模态大模型
  • Floyd算法求解最短路径
  • 道阻且长,未来可期,从GPT-4窥得通用人工智能时代的冰山一角!
  • 总结vue2基础面试
  • 常见的系统架构
  • Java数据结构 - LinkedHashMap 与 LruCache
  • 星戈瑞-Sulfo-Cyanine3 azide?磺酸基-Cy3-N3叠氮基水溶性染料
  • 文心一言---中国版的“ChatGPT”狂飙的机会或许要出现了
  • 【华为机试真题 Python实现】2023年1、2月高频机试题
  • 云原生之docker容器监控详解(cAdvisor、node exporter、prometheus)
  • 解决 IDA 防F5转伪C笔记
  • 站上风口,文心一言任重道远
  • 数字信号处理:滤波、频谱