zoukankan      html  css  js  c++  java
  • Go前言

    Go语言为并发而生

      硬件制造商正在为处理器添加越来越多的内核以来提高性能。所有数据中心都在这些处理器上运行,今天的应用程序使用多个微服务来维护数据库连接,消息队列和维护缓存。所以,开发的软件和编程语言应该能够轻松的支持并发,并且应该能够随着CPU核心数量的增加而变得可扩展

      但是大多数的编程语言都是九十年代的单线程环境,虽然其中有一些语言的框架在不断的提高多核资源的使用效率,但是仍旧需要开发人员去花费大量的时间去搞懂这些框架的运行原理后才能够熟练的掌握

      Go语言发布于2009年,当时多核处理器已经上市了。Go语言在多核并发上拥有了原生的优势,Go语言从底层原生支持并发,无需第三方库、开发者的编程经验和开发经验。

      很多公司,其中特别是中国互联网公司,即将或者已经完成了使用Go语言的改造旧系统的过程。经过Go语言重构的系统能够使用更少的硬件资源获得更高的并发和I/O吞吐表现,充分挖掘硬件设备的潜力。

      Go语言的并发是基于goroutine的,goroutine类似于线程,但并不是线程。可以将goroutine理解成为一种虚拟的线程。Go语言运行的时候会参与调度goroutine,并将goroutine合理的分配给每个CPU中,最大限制的使用CPU的限制。开启一个goroutine的消耗非常小(大约2KB的内存),你可以轻松的创建数百万个goroutine。

      goroutine的特点:

      1. 具有可增长的分段堆栈。这也就意味着它们只会在需要的时候才会使用更多内存
      2. goroutine的启动时间比线程快
      3. goroutine原生支持利用channel安全的进行通信
      4. goroutine共享数据结构时无需使用互斥锁

    Go的性能非常强悍

      和其他高级语言相比,Java、Python这种高级语言在运行的时候需要先将人类可读的代码翻译成字节码,然后由专门的解释器转变成处理器可以理解的二进制的文件

      Go语言也是编译型语言,它直接将人类可读的代码编译成了处理器可以直接接受的二进制文件,执行效率更高,性能更好

  • 相关阅读:
    【转载】用opencv中的CvEM做GMM的训练
    关于OpenCV做图像处理内存释放的一些问题
    关于C++ vector的拷贝
    VS2015创建的C++程序在Debug模式下不能调试
    OpenCV中IplImage和Mat间的相互转换
    视频资源下载方法[download video resources]
    关于win10安装VisualSVN遇到的一个问题及解决办法
    win7启动出现蓝屏STOP: 0X0000007B
    CentOS下挂在NTFS分区
    硬盘类型和Linux的分区
  • 原文地址:https://www.cnblogs.com/tulintao/p/11799303.html
Copyright © 2011-2022 走看看