美文网首页
Go并发编程-基础-第一期

Go并发编程-基础-第一期

作者: 没我找不到电子书 | 来源:发表于2018-11-29 00:05 被阅读0次

并发程序与并行程序

 并发程序指可以被同时发起的程序,多个任务在CPU的某个核上交替运行,而并行程序则是被设计成可以在并行的硬件上执行的并发程序。
 假如我们正在编写一个 web 浏览器。这个 web 浏览器有各种组件。其中两个分别是 web 页面的渲染和从网上下载文件的下载器。假设我们已经构建好了浏览器代码,各个组件也都可以相互独立地运行(通过像 Java 里的线程,或者通过即将介绍的 Go 语言中的 [Go 协程]来实现)。当浏览器在单核处理器中运行时,处理器会在浏览器的两个组件间进行上下文切换。它可能在一段时间内下载文件,转而又对用户请求的 web 页面进行渲染。这就是并发。并发的进程从不同的时间点开始,分别交替运行。在这里,就是在不同的时间点开始进行下载和渲染,并相互交替运行的。
 如果该浏览器在一个多核处理器上运行,此时下载文件的组件和渲染 HTML 的组件可能会在不同的核上同时运行。这称之为并行。
 并行不一定会加快运行速度,因为并行运行的组件之间可能需要相互通信。在我们浏览器的例子里,当文件下载完成后,应当对用户进行提醒,比如弹出一个窗口。于是,在负责下载的组件和负责渲染用户界面的组件之间,就产生了通信。在并发系统上,这种通信开销很小。但在多核的并行系统上,组件间的通信开销就很高了。所以,并行不一定会加快运行速度!

并发程序内部交互

 并发程序内部会被划分为多个部分,每个部分都可以看作一个串行程序。在这些串行程序间可能会存在交互的需求。这就涉及到同步。同步的作用是避免在并发访问共享资源时可能发生的冲突,以及确保有条不絮的传递数据。
 传递数据是并发程序内部的另一种交互方式,也称为并发程序的内部通信。实际上协调这中内部通信的机制除了“同步”这一种也可以使用“异步”。异步方式可以不加延迟的发送给数据接收方。即使接收方还没有为接受数据做好准备,也不会造成数据发送方的等待。数据会被临时存放在一个称为通信缓存的数据结构中。通信缓存是一种特殊的共享资源,它可以被多个程序使用。数据接收方可以在准备就绪后按照数据存入通信缓存的顺序接受它们。

相关文章

  • Go 基础

    基础 [TOC] 特性 Go 并发编程采用CSP模型不需要锁,不需要callback并发编程 vs 并行计算 安装...

  • GO学习笔记(18) - 并发编程(3)- Select与Cha

    本文主要讲解Go并发编程之Select 目录 介绍 基础语法 timeout 综合实例 select 是 Go 中...

  • Go基础编程---并发

    并行和并发 并行: 指在同一时刻,有多条指令在多个处理器上同时进行并发:同一时刻只能有一条指令执行,但是多个指令被...

  • 面试刷题17:线程两次start()会发生什么?

    线程是并发编程的基础元素,是系统调度的最小单元,现代的jvm直接对应了内核线程。为了降低并发编程的门槛,go语言引...

  • Go并发编程-基础-第一期

    并发程序与并行程序  并发程序指可以被同时发起的程序,多个任务在CPU的某个核上交替运行,而并行程序则是被设计成可...

  • Go基础语法(九)

    Go语言并发 Go 是并发式语言,而不是并行式语言。 并发是指立即处理多个任务的能力。 Go 编程语言原生支持并发...

  • 通道

    通道是 Go 并发编程中重要的一员 基础知识 通道是 Go 自带的,唯一一个可以满足并发安全性的类型。 声明并初始...

  • Go并发

    Go语言中的并发编程 并发是编程里面一个非常重要的概念,Go语言在语言层面天生支持并发,这也是Go语言流行的一个很...

  • Go语言基础6 - 并发

    概述 我们将用几节来学习Go语言基础,本文结构如下: 1. 并发 1.1 通过通信共享内存 在并发编程中,为实现对...

  • 瞅一眼就会使用GO的并发编程分享

    [TOC] GO的并发编程分享 之前我们分享了网络编程,今天我们来看看GO的并发编程分享,我们先来看看他是个啥 啥...

网友评论

      本文标题:Go并发编程-基础-第一期

      本文链接:https://www.haomeiwen.com/subject/hfwsqqtx.html