go语言进阶-工程进阶 | 青训营笔记

46 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

并发编程相关

Go语言的协程——Goroutine

协程英文名Coroutine,协程的调度完全由用户控制。人们通常将协程和子程序(函数)比较着理解。 子程序调用总是一个入口,一次返回,一旦退出即完成了子程序的执行。

与传统的系统级线程和进程相比,协程的最大优势在于其"轻量级",可以轻松创建上百万个而不会导致系统资源衰竭,而线程和进程通常最多也不能超过1万的。

协程的特点在于是一个线程执行,与多线程相比,其优势体现在:协程的执行效率极高。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显,但协程的切换开销也要看实现,还是有开销基本等同线程的实现:栈切换,缓存丢失等等。好处是可以不进内核状态。

QQ截图20230116211726.png

QQ截图20230116212143.png

索引

索引(index)是指一类特殊的数据结构,它由索引键和指向数据文件中相应记录的记录指针(或记录号)组成。索引键是记录的一个或一组数据项。索引用来提高数据查询效率,但同时引入存储代价和更新代价。[1] 在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

参考文档:GO语言基础进阶教程:Go语言的协程——Goroutine - 知乎 (zhihu.com)

索引 - 快懂百科 (baike.com)