go 语言的并发模型
无论语言层面的哪种并发模型,到了操作系统层面肯定是以线程的状态存在的,操作系统依据资源拜访权限的不同,体系架构能够分为用户空间(不能够间接调用系统资源,必须通过零碎调用,函数库,shell 脚本等调用内核空间的资源)和内核空间(次要拜访 CPU 资源,内存资源,io 等硬件资源,为上一层的应用程序提供根底资源)。
咱们当初计算机语言比方 Java,Go 外面的线程指的都是用户空间里的线程,和操作系统内核空间的线程是不同的,Go 语言的并发模型底层是由操作系统提供的线程库来撑持的,所以上面就先从线程模型说起。
线程模型
线程能够看做过程中的控制流,一个过程至多蕴含一个线程,因为在过程执行的时候,至多会有一个控制流继续执行。
所以一个过程的第一个线程会随着一个过程的启动而创立,这个线程常常被叫做主线程。一个过程中能够蕴含多个线程,这些线程是被曾经存在的线程创立进去的。另一方面,线程不能够独立于过程存在,线程的生命周期不可逾越过程的生命周期。
领有更多个线程的过程就能够并发的执行多个工作,并且就算某一个工作被阻塞,其余工作也能够失常运行,这样就能够大大改善程序的响应工夫和吞吐量。
线程的实现模型次要有 3 个,未完待续。。。
参考资源:bilibili