Golang的CSP模型讲解

一.CSP是什么

CSP 是 Communicating Sequential Process 的简称,中文可以叫做通信顺序进程,是一种并发编程模型,是一个很强大的并发数据模型,是上个世纪七十年代提出的,用于描述两个独立的并发实体通过共享的通讯channel(管道-用于传输和同步数据)进行通信的并发模型,在CSP模型中,每个并发执行的任务都是独立的,它们之间不会共享同一块内存空间,而是通过通信来进行数据交换和协调,相对于Actor模型,CSP中channel是第一类对象,它不关注发送消息的实体,而关注与发送消息时使用的channel,严格来说,CSP 是一门形式语言(类似于 ℷ calculus),用于描述并发系统中的互动模式,也因此成为一众面向并发的编程语言的理论源头,并衍生出了 Occam/Limbo/Golang…

而具体到编程语言,如 Golang,其实只用到了 CSP 的很小一部分,即理论中的 Process/Channel(对应到语言中的 goroutine/channel):这两个并发原语之间没有从属关系, Process 可以订阅任意个 Channel,Channel 也并不关心是哪个 Process 在利用它进行通信,Process 围绕 Channel 进行读写,形成一套有序阻塞可预测的并发模型

二.Golang的CSP模型

与主流语言通过共享内存来进行并发控制方式不同,Go语言采用了 CSP 模式,这是一种用于描述两个独立的并发实体通过共享的通讯Channel(管道)进行通信的并发模型,Go 就是借用CSP模型的一些概念为之实现并发进行理论支持,其实从实际上出发,go语言并没有,完全实现了CSP模型的所有理论,仅仅是借用了 process和channel这两个概念,process是在Go语言上的表现就是goroutine,是实际并发执行的实体,每个实体之间是通过channel通讯来实现数据共享,Go并发的核心哲学是:不要通过共享内存来通信,而应该通过通信来共享内存,从以上描述可知:Go语言的CSP模型是由协程goroutine管道channel实现的:

有了channel和goroutine之后,Go 的并发编程变得异常容易和安全,得以让程序员把注意力留到业务上去,实现开发效率的提升

 以上就是Go语言中的独立并发执行(CSP)模型的详细内容

相关推荐

  1. GolangCSP模型讲解

    2024-03-17 08:42:05       21 阅读
  2. CSS盒子模型

    2024-03-17 08:42:05       31 阅读
  3. golanddebug模式修复

    2024-03-17 08:42:05       46 阅读
  4. 深入理解GolangOptions模式

    2024-03-17 08:42:05       22 阅读
  5. Golang】Go 中生产者-消费者模式

    2024-03-17 08:42:05       8 阅读
  6. Lua 协程模拟 Golang go defer 编程模式

    2024-03-17 08:42:05       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-17 08:42:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-17 08:42:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-17 08:42:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-17 08:42:05       18 阅读

热门阅读

  1. Android Framework开发之Linux +Vim命令

    2024-03-17 08:42:05       20 阅读
  2. Go 日期时间包装器:15条更便捷的时间处理

    2024-03-17 08:42:05       18 阅读
  3. Mar 18 | Datawhale 05~08 打卡

    2024-03-17 08:42:05       19 阅读
  4. [蓝桥杯 2021 省 AB2] 完全平方数

    2024-03-17 08:42:05       18 阅读
  5. wrk安装及使用

    2024-03-17 08:42:05       20 阅读
  6. 前端小白的学习之路(HTML5 二)

    2024-03-17 08:42:05       16 阅读
  7. 数据清洗与预处理:打造高质量数据分析基础

    2024-03-17 08:42:05       19 阅读
  8. 55. 跳跃游戏

    2024-03-17 08:42:05       22 阅读
  9. 蓝桥杯刷题|01普及-真题

    2024-03-17 08:42:05       15 阅读
  10. P8780 [蓝桥杯 2022 省 B] 刷题统计 Python

    2024-03-17 08:42:05       21 阅读
  11. 跳出循环及数组部分方法

    2024-03-17 08:42:05       19 阅读