Go进阶
文章平均质量分 88
Tgq
这个作者很懒,什么都没留下…
展开
-
内存分配器
前言 内存空间包含两个重要区域:栈区(Stack)和堆区(Heap)。函数调用的参数、返回值以及局部变量大都会被分配到栈上,这部分内存会由编译器进行管理;不同编程语言使用不同的方法管理堆区的内存,C++ 等编程语言会由工程师主动申请和释放内存,Go 以及 Java 等编程语言会由工程师和编译器共同管理,堆中的对象由内存分配器分配并由垃圾收集器回收。因此这里主要讨论堆中的内存。 设计原理 内原创 2021-08-06 11:04:55 · 243 阅读 · 0 评论 -
Go进阶-协程GMP模型
Go 语言在并发编程方面有强大的能力,谈到 Go 语言调度器,绕不开的是操作系统、进程与线程这些概念,线程是操作系统调度时的最基本单元,而 Linux 在调度器并不区分进程和线程的调度,它们在不同操作系统上也有不同的实现,但是在大多数的实现中线程都属于进程。 多个线程可以属于同一个进程并共享内存空间。因为多线程不需要创建新的虚拟内存空间,所以它们也不需要内存管理单元处理上下文的切换,线程之间的通信也正是基于共享的内存进行的,与重量级的进程相比,线程显得比较轻量。虽然线程比较轻量,但是在调度时也有比较大的额外原创 2021-06-18 16:09:18 · 308 阅读 · 0 评论