现在位置: 首页 > 自动控制 > 工业·编程 > 文章
      最近研究高性能C++协程,网上了解到了魅族libgo、腾讯libco、开源libaco、boost coroutine,这里记录一下。 1 什么是协程        协程可以很轻量的在子例程中进行切换,它由程序员进行子例程的调度(即切换)而不像线程那样需要内核参与,同时也省去了内核线程切换的开销,因为一个协程切换保留的就是函数调用栈和当前指令的寄存器,而线程切换需要陷入内核态,...
阅读全文
2018-08-29 19:48 工业·编程 ⁄ 共 3299字 暂无评论
在上周举办的云栖大会重庆峰会上,阿里云总裁兼AliOS总裁胡晓明宣布,在重庆生产的新福特翼虎将搭载基于AliOS的斑马智行,并于近期上市,这是全球汽车巨头第一次使用中国的汽车操作系统。 他还畅想到,当搭载AliOS的车辆达到1000万、2000万辆,将会对城市规划、道路出行、资源节约起到促进作用。不得不说,胡晓明的野心真大。要知道,目前AliOS装车量仅为70万辆,年底将突破100万辆,从2016年7月全球首款量产互联网汽车荣威RX5...
阅读全文
作为linux的热衷者和初学者,我们在学习的过程中难免会碰到不少的问题,下面简单的介绍和总结一下,如何在vmware中实现Ubuntu与win10(主机)之间的共享文件的。 1、在虚拟机VMware的菜单栏选择 虚拟机-->安装VMware Tools... 2、选中“安装VMware Tools...”之后可以下图路径找到。或者在/media/VMware Tools目录中找到安装软件压缩包 3、把VMwareTools-10.0.0-2977863.tar.gz拷贝到/tmp目录下 4、在进入/tmp目录下解压VMwareTo...
阅读全文
2018-04-25 06:29 工业·编程 ⁄ 共 993字 暂无评论
NetBSD 是一个继承自 BSD 的自由、安全且支持诸多处理器架构的类 Unix 操作系统。其源代码完全开源,开发活跃,应用广泛。NetBSD 项目于 4 月 23 日宣布了 NetBSD 8.0 的第一个发布候选。相较于 7.0 版本,NetBSD 8.0 包含诸多更新。部分显著更新如下: 重制 USB 栈,支持 USB3; 内核内置混音器; 可重现的构建; 在某些支持细粒度内存保护且有合适 ELF 格式的架构(i386、amd64、evbarm、landisk 及 pmax)中默认...
阅读全文
2017-12-05 22:25 工业·编程 ⁄ 共 4111字 暂无评论
1.hadoop-3.0要求JDK版本不低于1.8,对之前的Java版本不再提供支持. 所有Hadoop JAR现在都是针对Java 8的运行时版本编译的。 2.部分服务默认端口修改,不再绑定到Linux临时端口 (HDFS-9427,HADOOP-12811) Namenode ports: 50470 --> 9871, 50070--> 9870, 8020 --> 9820 Secondary NN ports: 50091 --> 9869,50090 --> 9868 Datanode ports: 50020 --> 9867, 50010--> 9866, 50475 --> 9865, 50075 -...
阅读全文
2017-08-08 17:59 工业·编程 ⁄ 共 1558字 暂无评论
1、协程是什么? (1)线程 每一个线程都代表一个执行序列。当我们在程序中创建多线程的时候,看起来,同一时刻多个线程是同时执行的,不过实质上多个线程是并发的,因为只有一个CPU,所以实质上同一个时刻只有一个线程在执行。在一个时间片内执行哪个线程是不确定的,我们可以控制线程的优先级,不过真正的线程调度由CPU的调度决定。 (2)协程 协程跟线程都代表一个执行序列。不同的是,协程把线程中不确定的地方尽可能的去掉...
阅读全文
在linux多线程环境下对同一变量进行读写时,经常会遇到读写的原子性问题,即会出现竞争条件。为了解决多个线程对同一变量访问时的竞争条件问题,操作系统层面提供了锁、信号量、条件变量等几种线程同步机制。如果对变量的每次访问都使用上述机制,由于系统调用会陷入内核空间,需要频繁的进行上下文切换,这就导致了程序的时间开销比较大。 自然的,我们就想到,在多线程环境中,在某些情况下是否能减少甚至避免使用系统调用?...
阅读全文
2017-07-25 15:40 工业·编程 ⁄ 共 4734字 暂无评论
    libco 协程库在单个线程中实现了多个协程的创建和切换。按照我们通常的编程思路,单个线程中的程序执行流程通常是顺序的,调用函数同样也是 “调用——返回”,每次都是从函数的入口处开始执行。而libco 中的协程却实现了函数执行到一半时,切出此协程,之后可以回到函数切出的位置继续执行,即函数的执行可以被“拦腰斩断”,这种在函数任意位置 “切出——恢复” 的功能是如何实现的呢?     本文从...
阅读全文
微信诞生于2011年1月,当年用户规模为0.1亿左右;2013年11月,微信月活跃用户数达到3.55亿,一跃成为亚洲地区拥有最大用户群体的移动终端即时通讯软件。 面对如此体量的提升,微信后台也曾遭遇棘手的窘境;令人赞叹的是技术人及时地做出了漂亮的应对。 这背后有着怎样的技术故事? 此时此刻,你在微信手机端发出的请求,是怎样被后台消化和处理的?这次,我们聚焦微信后台解决方案之协程库libco。该项目在保留后台敏捷的同步风...
阅读全文
2017-07-11 11:54 工业·编程 ⁄ 共 1696字 暂无评论
相比std::async,std::thread就原始多了。thread一定会创建新线程(而不是像async那样创建的时候可能不会,后面才创建新线程(std::launch::deferred)),并且创建它的线程还必须指定以何种策略等待新线程。 #include <iostream> #include <thread> void task() {     for (int i = 0; i < 10; i++) {         std::cout << "A";   &#...
阅读全文