闭包VS协程

这段时间在看闭包与协程的东西,写点东西来总结一下:

闭包:函数与其相关的引用环境所组合而成的实体。维基百科上对闭包的解释是:闭包可以用来在一个函数与一组“私有”变量之间创建关联关系。在给定函数被多次调用的过程中,这些私有变量能够保持其持久性。变量的作用域仅限于包含它们的函数,因此无法从其它程序代码部分进行访问。不过,变量的生存期是可以很长,在一次函数调用期间所创建所生成的值在下次函数调用时仍然存在。正因为这一特点,闭包可以用来完成信息隐藏,并进而应用于需要状态表达的某些编程范型中。

协程:协程在我看来是能够保存中间执行状态的例程,协程类似于C语言中的函数,但函数是没有中间状态的,而协程可以保留中间执行状态以便进行协程间的切换。

下面是三者的区别:

函数(function):

1、无状态

2、需要独立定义执行体

3、在输入相同的情况下,输出也相同

4、多线程安全

5、要借助外部变量保存状态

闭包(closure):

1、有状态,内部直接保存

2、直接内部定义执行体

3、调用过程中从头到尾执行执行体内全部代码

4、输入相同的情况下,输出不一定相同

5、多线程不一定安全

6、调用简单,不需要传入保存状态的参数

协程(coroutine):

1、有状态,内部直接保存

2、需要独立定义执行体

3、调用直接从上次执行状态继续运行

4、输入相同时,输出不一定相同

5、严禁多线程访问

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值