ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Go高级工程师实战营 百度网盘

2021-09-15 10:00:55  阅读:209  来源: 互联网

标签:实战 操作系统 百度网 调度 线程 Go 多线程


Go高级工程师实战营介绍

Go是现代编程语言领域中最新加入的语言之一。Go自诩为“一种开源编程语言,可以轻松构建简单、可靠和高效的软件”。Go使开发人员能够以简洁、简单和安全的方式构建健壮和高效的软件。找到一个优秀的围棋开发人员不仅仅需要找到一个好的程序员,还需要找到一个理解这门语言、它的习惯用语等等的人

Go高级工程师实战营 - 原理深入分析

Go高级工程师实战营 - 操作系统调度 OS Scheduler

Go调度器的设计和行为允许您的多线程Go程序更高效和性能。这要感谢Go调度器对操作系统(OS)调度器的机制支持。然而,如果你的多线程Go软件的设计和行为与调度器的工作方式在机械上不一致,那么这些都无关紧要。对于OS和Go调度器如何正确设计多线程软件,有一个一般性和代表性的理解是很重要的。

操作系统调度器是复杂的软件。他们必须考虑他们所运行的硬件的布局和设置。这包括但不限于多个处理器和核心、CPU缓存和NUMA的存在。如果没有这些知识,调度器就不能尽可能高效。最棒的是,您仍然可以开发一个很好的心理模型,了解操作系统调度器如何工作,而不必深入研究这些主题。
你的程序只是一系列机器指令,需要一个接一个地依次执行。

Go高级工程师实战营 - 进程和线程 线程与 Goroutine

多个线程可以属于同一个进程并共享内存空间。因为多线程不需要创建新的虚拟内存空间,所以它们也不需要内存管理单元处理上下文的切换,线程之间的通信也正是基于共享的内存进行的,与重量级的进程相比,线程显得比较轻量。

虽然线程比较轻量,但是在调度时也有比较大的额外开销。每个线程会都占用 1M 以上的内存空间,在切换线程时不止会消耗较多的内存,恢复寄存器中的内容还需要向操作系统申请或者销毁资源,每一次线程上下文的切换都需要消耗 ~1us 左右的时间1,但是 Go 调度器对 Goroutine 的上下文切换约为 ~0.2us,减少了 80% 的额外开销。

Go高级工程师实战营介绍

Go是现代编程语言领域中最新加入的语言之一。Go自诩为“一种开源编程语言,可以轻松构建简单、可靠和高效的软件”。Go使开发人员能够以简洁、简单和安全的方式构建健壮和高效的软件。找到一个优秀的围棋开发人员不仅仅需要找到一个好的程序员,还需要找到一个理解这门语言、它的习惯用语等等的人

Go高级工程师实战营 - 原理深入分析

Go高级工程师实战营 - 操作系统调度 OS Scheduler

Go调度器的设计和行为允许您的多线程Go程序更高效和性能。这要感谢Go调度器对操作系统(OS)调度器的机制支持。然而,如果你的多线程Go软件的设计和行为与调度器的工作方式在机械上不一致,那么这些都无关紧要。对于OS和Go调度器如何正确设计多线程软件,有一个一般性和代表性的理解是很重要的。

操作系统调度器是复杂的软件。他们必须考虑他们所运行的硬件的布局和设置。这包括但不限于多个处理器和核心、CPU缓存和NUMA的存在。如果没有这些知识,调度器就不能尽可能高效。最棒的是,您仍然可以开发一个很好的心理模型,了解操作系统调度器如何工作,而不必深入研究这些主题。
你的程序只是一系列机器指令,需要一个接一个地依次执行。

Go高级工程师实战营 - 进程和线程 线程与 Goroutine

多个线程可以属于同一个进程并共享内存空间。因为多线程不需要创建新的虚拟内存空间,所以它们也不需要内存管理单元处理上下文的切换,线程之间的通信也正是基于共享的内存进行的,与重量级的进程相比,线程显得比较轻量。

虽然线程比较轻量,但是在调度时也有比较大的额外开销。每个线程会都占用 1M 以上的内存空间,在切换线程时不止会消耗较多的内存,恢复寄存器中的内容还需要向操作系统申请或者销毁资源,每一次线程上下文的切换都需要消耗 ~1us 左右的时间1,但是 Go 调度器对 Goroutine 的上下文切换约为 ~0.2us,减少了 80% 的额外开销。

标签:实战,操作系统,百度网,调度,线程,Go,多线程
来源: https://www.cnblogs.com/vvXXX-itwangke888/p/15270930.html

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有