Golang GMP 模型

2023-12-21 4 min read golang

前言 在 golang 的并发编程中,gmp 是一个重要的概念,它代表了 goroutine、m(线程)和 p(调度器)。 这个强大的三位一体的并发模型使得 golang 在处理并发任务时非常高效和灵活。 通过 gmp 的组合,golang 实现了一种高效的并发模型。 它充分利用了多核处理器的优势,并通过轻量级的 goroutine 实现了高并发的编程模式。 但是gpm到底是怎么工作的呢?今天这篇文章就为您解开gpm的神秘面纱。 调度器由来 单进程系统 早期的计算机都是单进程操作系统,各个进程之间都是顺序执行,也就是进程a执行完了才能执行进程b。 「对于cpu来说,进程和线程是一样的,这里我们就不讨论进程和线程的区别了」 存在的问题 单一执行流程,计算机只能一个任务一个任务的处理 如果进程a阻塞,会带来很多cpu浪费的时间 多进程/线程操作系统 基于以上的问题,于是就出现了多进程/线程操作系统...


高内聚低耦合

2017-03-15 1 min read Design

模块之间存在依赖, 导致改动可能会互相影响, 关系越紧密, 耦合越强, 模块独立性越差。 模块内部的元素,关联性越强, 则内聚越高, 模块单一性更强。 模块 模块就是从逻辑上将系统分解为更细微的部分, 分而治之, 复杂问题拆解为若干简单问题, 逐个解决。 耦合主要描述模块之间的关系, 内聚主要描述模块内部。 模块的粒度可大可小, 可以是函数, 类, 功能块等等。 耦合 模块之间存在依赖, 导致改动可能会互相影响, 关系越紧密, 耦合越强, 模块独立性越差。 比如模块A直接操作了模块B中数据, 则视为强耦合,...