【CMU 6.824】 RPC & Threads

Why Golang?—— Go vs. C++

  1. Go语言提供了很好的RPC包支持,课程过去使用的C++很难找到很好的RPC包
  2. Go语言是类型安全、内存安全的,内置GC避免了内存泄漏;在多线程编程中,支持GC是很是重要的,使得代码变得简洁,避免了程序员使用计数来管理申请的内存(对象)
  3. Go语言足够简单,编译器报错简洁精准

Threads

多线程是咱们用来管理程序中并发问题的关键:在程序解决须要与多个计算机沟通的任务时,使用多线程可以很方便的实现。在Go语言中,Threads意味着Goroutine。程序员

todo: Goroutine的资料golang

Why Threads?

  • 多线程容许程序的不一样部分作它们本身的事情,由于历史缘由,称为并发I/O(I/O concurrency)。这里,咱们常说的并发I/O是指一个已经启动的程序在同一时间内经过RPC来对不一样的服务器来进行请求,使用多线程能够容许咱们同时进行多个网络请求。事实上,多线程不止能够解决网络请求的问题。
  • 并行性能:可否在大型服务器集群上使用多核心CPU的处理能力是实现分布式系统的关键
  • 方便:能够在后台使用worker来执行周期性事务

并发concurrency vs. 并行parallelism
并发与并行的区别是什么? - 刘志军的回答 - 知乎编程

If not Threads

若是没有线程,咱们如何处理这种需求?一种主流作法是异步编程,或者说事件驱动编程(event-driven)安全

事实上,使用多线程的方式编写程序将程序的功能分割成多个小模块,更易理解。服务器

to be continue网络