协程:更轻量级线程与多语言实践.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

44-协程:更轻量级的线程

Java语言里解决并发问题靠的是多线程,但线程是个重量级的对象,不能频繁创建、销毁,而且

线程切换的成本也很高,为了解决这些问题,JavaSDK了线程池。然而用好线程池并不容

易,Java围绕线程池了很多工具类,这些工具类学起来也不容易。那有没有更好的解决方案

呢?Java语言里目前还没有,但是其他语言里有,这个方案就是协程(Coroutine)。

我们可以把协程简单地理解为一种轻量级的线程。从操作系统的角度来看,线程是在内核态中调

度的,而协程是在用户态调度的,所以相对于线程来说,协程切换的成本更低。协程虽然也有自

己的栈,但是相比线程栈要小得多,典型的线程栈大小差不多有1M,而协程栈的大小往往只有

几K或者几十K。所以,无论是从时间维度还是空间维度来看,协程都比线程轻量得多。

支持协程的语言还是挺多的,例如Golang、Python、Lua、Kotlin等都支持协程。下面我们就

以Golang为代表,看看协程是如何在Golang中使用的。

Golang中的协程

在Golang中创建协程非常简单,在下面的示例代码中,要让hello()方法在一个新的协程中执

行,只需要gohello(World)这一行代码就搞定了。你可以对比着想想在Java里是如

何“辛勤”地创建线程和线程池的吧,我的感觉一直都是:每次写完Golang的代码,就再也不

想写Java代码了。

import(

fmt

time

)

funchello(msgstring){

fmt.Println(Hello+msg)

}

funcmain(){

//在新的协程中执行hello方法

gohello(World)

fmt.Println(Runinmain)

//等待100毫秒让协程执行结束

time.Sleep(100*time.Millisecond)

}

44-Coroutines:Morelightweight

threads

TheJavalanguagereliesonmulti-threadingtosolveconcurrencyproblems,butthreadsareheavyweight

objectsthatcannotbecreatedanddestroyedfrequently,andthecostofthreadswitchingisalsoveryhigh.In

ordertosolvetheseproblems,theJavaSDKprovidesathreadpool.However,itisnoteasytomakegooduse

ofthethreadpool.Javaprovidesmanytoolclassesaroundthethreadpool,andthesetoolclassesarenoteasy

tolearn.Isthereatersolution?ThereisnotyetintheJavalanguage,butthereisinotherlanguages.This

solutionisCoroutine.

Wecansimplyunderstandacoroutineasalightweightthread.Fromtheperspectiveoftheoperatingsystem,

threadsaresch

文档评论(0)

wccebooks + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档