• 【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的资料

    Why Threads?

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

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

    If not Threads

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

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

    Thread Challenges

    • 如何处理共享数据?多线程一个很方便的点在于这些线程是共享内存的,但是这很容易出错——很经典的并发问题——竞争(RACE)

    to be continue

  • 相关阅读:
    利用 localStorage 储存css js
    实现图片延迟加载的一些 库
    less 应用
    vue 问题集合||
    一个简易的登录框
    python_协程方式操作数据库
    爬取知名社区技术文章_分析_1
    python_爬百度百科词条
    python_爬校花图片
    python_猜年龄
  • 原文地址:https://www.cnblogs.com/yux1a0/p/13100188.html
Copyright © 2020-2023  润新知