Golang|context
context意义
Go 中的 context 包在与 API 和慢处理交互时可以派上用场,特别是在生产级的 Web 服务中。在这些场景中,您可能想要通知所有的 goroutine 停止运行并返回。
context使用
context相关函数
|
|
context相关使用
Done方法取消
|
|
WithValue传值
|
|
WithTimeout超时取消
|
|
WithDeadline截止时间
|
|
记录所学所思所想,专注于Go语言、软件架构
Go 中的 context 包在与 API 和慢处理交互时可以派上用场,特别是在生产级的 Web 服务中。在这些场景中,您可能想要通知所有的 goroutine 停止运行并返回。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
创建channel实际上就是在内存中实例化了一个hchan的结构体,并返回一个ch指针,我们使用过程中channel在函数之间的传递都是用的这个指针,这就是为什么函数传递中无需使用channel的指针,而直接用channel就行了,因为channel本身就是一个指针。
……GO语言内存管理子系统主要由两部分组成:内存分配器和垃圾回收器(gc)。内存分配器主要解决小对象的分配管理和多线程的内存分配问题。
Golang运行时的内存分配算法主要源自 Google 为 C 语言开发的TCMalloc算法,全称Thread-Caching Malloc
。核心思想就是把内存分为多级管理,从而降低锁的粒度。它将可用的堆内存采用二级分配的方式进行管理:每个线程都会自行维护一个独立的内存池,进行内存分配时优先从该内存池中分配,当内存池不足时才会向全局内存池申请,以避免不同线程对全局内存池的频繁竞争。
两个或两个以上的任务在一段时间内被执行。例如跑步的时候,停下来系鞋带
两个或两个以上的任务在同一时刻被同时执行。例如跑步的时候,边跑边听歌
从线程讲起,无论语言层面何种并发模型,到了操作系统层面,一定是以线程的形态存在的。而操作系统根据资源访问权限的不同,体系架构可分为用户空间和内核空间;内核空间主要操作访问CPU资源、I/O资源、内存资源等硬件资源,为上层应用程序提供最基本的基础资源,用户空间呢就是上层应用程序的固定活动空间,用户空间不可以直接访问资源,必须通过系统调用、库函数或Shell脚本,来调用内核空间提供的资源。
……本文阅读课程来源见此go系列教程
|
|
go支持一下几类基本类型
……由<key,value>对组成的抽象数据结构,并且同一个key只出现一次
方法 | hash | 搜索树 -|-|- 复杂度 | O(1) | O(logN) 顺序 | 乱序 | 有序 痛点 | 碰撞问题 | 平衡问题
|
|
上面代码通过以下指令查看汇编语句 go tool compile -S main.go