老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

GO语言中CSP是什么,有哪些优点?GO开发学习

老男孩IT教育

行业新闻

2021年8月13日 14:32

GO实现了两种开发形式,第一种是常见的多线程,如java和C++等语言中的多线程开发,另一种是GO语言特有的,也是GO中的的CSP,为了更好地编写并发程序,从设计之初Go语言就注重如何在编程语言层级上设计一个简洁安全高效的抽象模型,让开发人员专注于分解问题和组合方案,而且不用被线程管理和信号互斥这些烦琐的操作分散精力。

       GO实现了两种开发形式,第一种是常见的多线程,如java和C++等语言中的多线程开发,另一种是GO语言特有的,也是GO中的的CSP,为了更好地编写并发程序,从设计之初Go语言就注重如何在编程语言层级上设计一个简洁安全高效的抽象模型,让开发人员专注于分解问题和组合方案,而且不用被线程管理和信号互斥这些烦琐的操作分散精力。

GO语言学习

       CSP是什么呢?即通信顺序进程、交谈循序程序,也被译为交换消息的循序程序,它是一种用来描述并发行系统之间进行交互的模型。

       CSP最大的优点就是灵活,但容易出现死锁的情况,现如今未给予直接的并行支持,并行需要建立在并发的基础之上。

       在CSP中,进程间需要经过一种被称为管道的东西,来进行通信,什么是管道呢?两个并发任务不需要共享内存,而是通过建立一条点对点的管道,数据用完之后,管道就撤销了,有管道之后,不需要事先锁,而是需要用数据时建立管道,不需要数据时撤销管道即可。

       管道与共享内存之间有很大区别,共享内存是通过内存来共享,而管道是通过通信来共享内存,所以管道通信比共享内存效率要高很多。

       协程是什么呢?coroutine就是协程,也称为go程,通过管道能够实现百万级的并发,如果说线程是抢占式的,那协程就是协作式的,在协程中,也是通过管道来调度的,解放线程对CPU和内存的开销,线程是先占用CPU和内存后才调度,而协程是通过通信发送信号来调度,协程全是通过管道,由于协程的消耗比线程小很多,所以能够实现百万并发。

       在协程中,IO操作时绝大部分时间与CPU无关,这是管道带来的优势,不需要长时间锁住内存,也不需要CPU来做调度。

       老男孩GO语言课程需要学什么?老男孩教育GO语言课程专为在职人员设计,内容丰富、紧凑,贴近企业实战,学完后即可拥有多年实战经验,真正满足企业用人需求。

       推荐阅读:

  Python数组和列表的区别?Python教程

  Linux运维工程师的前景怎么样?Linux运维

  Python三大主流框架对比!Python学习教程

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。