Go 并发模型详解

go语言的并发模型

     无论语言层面的哪种并发模型,到了操作系统层面一定是以线程的形态存在的,操作系统根据资源访问权限的不同,体系架构可以分为用户空间(不可以直接调用系统资源,必须通过系统调用,函数库,shell脚本等调用内核空间的资源)和内核空间(主要访问CPU资源,内存资源,io等硬件资源,为上一层的应用程序提供基础资源)。
    我们现在计算机语言比如Java,Go里面的线程指的都是用户空间里的线程,和操作系统内核空间的线程是不同的,Go语言的并发模型底层是由操作系统提供的线程库来支撑的,所以下面就先从线程模型说起。

线程模型

    线程可以看做进程中的控制流,一个进程至少包含一个线程,因为在进程执行的时候,至少会有一个控制流持续执行。
    所以一个进程的第一个线程会随着一个进程的启动而创建,这个线程经常被叫做主线程。一个进程中可以包含多个线程,这些线程是被已经存在的线程创建出来的。另一方面,线程不可以独立于进程存在,线程的生命周期不可逾越进程的生命周期。
    拥有更多个线程的进程就可以并发的执行多个任务,并且就算某一个任务被阻塞,其他任务也可以正常运行,这样就可以大大改善程序的响应时间和吞吐量。
    线程的实现模型主要有3个,未完待续。。。

参考资源:bilibili

你可能感兴趣的:(golang线程并发模型)