Rit*_*esh 9 android coroutine kotlin kotlin-coroutines
我正在经历共同惯例的概念,以及它在kotlin中的使用和实现.
我用Google搜索并阅读了几个答案,就其在架构和性能方面与线程的不同之处而言.
这里解释得很好,
很公平,合作例程很棒,没有内存开销,性能卓越,没有死锁,竞争条件等等,而且易于使用.
现在,这里有一些事情,我很困惑,并希望更清楚 -
协同例程很好用,但它如何利用多个内核来提高性能.
线程和协同程序几乎是正交的特征.
协同程序是关于您的编程模型,线程是关于您的执行模型.
如果要在Android中获取URL或执行重量级计算,则必须使用异步编程.您可以选择以老式方式,回调或协同程序来实现,这会使这些拐杖消失.您只需调用可挂起的函数并将结果作为其返回值.
请注意,对于重量级计算,您将使用带或不带协同程序的额外线程.对于网络操作,您不需要额外的线程,有或没有协同程序.
一个很好的类比是,线程是协调CPU内核到线程的程序:
操作系统将CPU核心分配给线程,直到线程挂起.稍后同一个线程可以在另一个核心上恢复.
协程调度程序将一个线程分配给协程,直到协程挂起.后来同一个协程可以在另一个线程上恢复.
| 归档时间: |
|
| 查看次数: |
709 次 |
| 最近记录: |