ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 并发 ## 并发和并行的区别 - 多线程程序在一个核上的cpu上运行 就是**并发** 主要是有切换时间片来实现同时运行 - 多线程程序在多个核上的cpu上运行 就是**并行** ### 并发和并行图示 ![](https://img.kancloud.cn/7f/b1/7fb16c4eed6168a743e0c94915ed0359_393x516.png) ## 协程和线程 ``` <pre class="calibre13">``` 协程:独立的栈空间,共享堆空间,调度由用户自己控制,本质上有点类似于用户级线程,这些用户级线程的调度也是自己实现的。 线程:一个线程上可以跑多个协程,协程是轻量级的线程。 ``` ``` Go语言中的goroutine就是这样一种机制,**goroutine的概念类似于线程**,但 goroutine是由Go的运行时(runtime)调度和管理的。Go程序会智能地将 goroutine 中的任务合理地分配给每个CPU。Go语言之所以被称为现代化的编程语言,就是因为它在语言层面已经内置了调度和上下文切换的机制。