个人对于协程的理解

有人问我协程是什么?很久以前了解过,但一直没用到,概念就忘了,最近又好好看了看协程的概念,做个记录。

首先,我觉得网上很多人把协程和线程一起比较是很让人混淆的,线程和进程都是操作系统级别的概念,协程我理解应该是代码运行流程的概念,放在一起比较很容易让人认为协程是进程一个类型的东西,虽然协程也叫轻量级线程,但是我了解下来应该不是一样东西,如果理解的不对,请指出。

然后,协程是什么,协程就是异步编程,由事件触发来使同一个线程干活。而协程和异步编程语言例如nodejs有什么区别呢?应该就是好看==就和语法糖是一样的,不过什么是语法糖?就是把汇编变成c,c变成java或者函数式编程,从而为一种语言提供给程序员更好用语法。 以前写程序从面向过程到面向对象,都是按照人的思维方式一步一步往下执行,而异步编程出现了大量的回调,然后回调里面再嵌套回调,然后代码就成了一坨一坨的,协程的出现使代码又回到之前写代码的风格,但却是异步执行的。那它怎么实现异步呢?则主要通过自己实现的上下文调度器,也就是很多文章里面写的直接操作栈。我估计是很多大牛因为技术太过深入,写的文章也太专业,我看了很久直接操作栈,满脑子都是和操作系统切换线程一样一样的,不过看了一些其他人的博客了解,我理解的直接操作栈其实就是保存上下文变量,使事件触发时调用该函数时能继续运行,说白点就是函数调用。不过之间具体有什么区别,还需要深入理解调度器才能知道。

最后,至于协程有什么好处呢,这个时候就要说说多线程了,因为现在服务器要开很多线程,然后进程线程开多了服务器就存在了线程切换开销过大的瓶颈,但协程不会,因为它就是一个线程在运行啊,但因为它是事件触发,所以你看起来好像很多线程一起在跑一样。

个人理解,如果偏差,请指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值