并发机制:CSP vs Actor模型以及Golang实现

本文对比了CSP和Actor两种并发模型,探讨了Go语言中CSP模型通过通道实现的并发机制,包括无缓冲和有缓冲Channel,并通过FutureTask举例说明。CSP强调通过消息传递避免耦合,而Actor模型以Actor间的异步消息通信为核心。两种模型各有优劣,CSP适合单机,Actor更适合分布式系统。
摘要由CSDN通过智能技术生成

CSP & Actor Model

本文将简单介绍CSP和Actor模型俩流行的并发机制,并比较他们的优缺点,并通过Golang中CSP并发机制实现FutureTask.并行机制有很多像是多线程,CSP,Actor等等.拿多线程来说,就有诸多问题,譬如:死锁,可扩展性差,共享状态.就像共享状态会产生很多问题,它涉及到内存的变化。只有一个进程发生变化没问题。但如果有多个进程共享和修改相同的数据,这将非常糟糕.为解决这些问题,提出了很多解决方法呢.比如,CSP和ActorModel.

如下是一些编程语言,以及它们相应的并发机制:

  • Actors Model — Erlang, Scala, Rust
  • CSP — Go-lang
  • 多线程 — Java, C#, C++

CSP

CSP(Communicating Sequential Processes)是依赖于一个通道channel完成两个通信实体之间协调的并发模型。它基于不共享内存的消息传递.

Go语言哲学就是不通过共享内存进行通信;而是,通过通信进行共享内存。

go语言中的unbuffered Channel:

  • 当在程序代码内丢了一个值到 channel,这时候 main 函数就需要等到一个 channel 值被读出来才会结束.
    在这里插入图片描述

BufferedChannel:

  • buffered channel 就是只要有容量,你都可以塞值进去࿰
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值