【码上开学】到底什么是「非阻塞式」挂起?协程真的比线程更轻量级吗?

大家好,我是扔物线朱凯。今天又是协程,不过今天有一些不一样:

  1. 今天是协程的最后一期(起码近期内最后一期);

  2. 今天的视频最后,我 dui 了 Kotlin 官方。好刺激啊。

这期主要是解释一下挂起的「非阻塞式」是怎么回事,以及对一些最常见的误导性言论进行一下日常打脸——当然了目的当然不是打谁的脸,我没那闲工夫,主要是给大家开个雾。

更多的话就不说了,来看视频吧:

另外,即刻那边这次还是没有我生产得快,所以配套的文章还要稍后再发。即刻迟到,码上缺席。

这是什么项目?

码上开学,是一个针对 Android 工程师的 Kotlin 上手指南。虽然针对上手,但包含了许多你在网上任何地方(包括英文社区、包括官方文档)都看不到的必备的技术细节。

码上开学项目由扔物线创办,目前由即刻 Android 团队协作一同产出。

觉得赞?关注吧!

下面这个,我的 B 站账号,也建议关注一下哦!B 站看视频的体验比微信要好一些,可以来试试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在多线程编程中,线程是操作系统中的最小执行单元,它负责执行代码并管理计算机的资源。线程通常由操作系统调度,并且在执行过程中会占用CPU时间片。 协程是一种轻量级线程,它在代码层面上实现了线程的功能。协程可以在同一个线程中,通过挂起和恢复的方实现多任务并发执行,从而避免了线程上下文切换的开销,提高了代码的执行效率。 当一个协程挂起时,它会将执行权交还给调度器,而不会占用CPU时间片,也不会阻塞底层线程。这意味着,即使在单线程中使用协程,也可以实现多任务并发执行的效果,而不会造成底层线程的阻塞。 底层线程是指操作系统中的实际线程。在单线程中使用协程时,底层线程就是当前线程。因为协程是在当前线程挂起和恢复的,所以它不会影响底层线程的执行。 ### 回答2: 底层线程是指在程序中负责执行任务的实际线程。当我们使用协程时,协程不会阻塞底层线程的执行。 在传统的编程模型中,当一个线程执行一个耗时的操作时,它会被阻塞,不能进行其他任务,直到操作完成。这会导致线程的资源利用率较低。 而协程是一种轻量级线程,可以在一个线程中实现多个协程的切换和调度。当一个协程遇到阻塞操作时,如网络请求或文件读取,它会主动挂起,并将执行权交回给底层线程。底层线程可以立即转而执行其他协程,而不需要等待阻塞操作完成。 挂起协程不会阻塞底层线程的意思是,即使协程需要等待某些操作完成,底层线程仍然可以执行其他协程。底层线程会根据协程的调度策略,在多个可执行的协程中进行切换,来最大限度地提高资源利用率和程序的并发性。 使用协程可以充分利用多核处理器的性能,提高程序的响应速度和并发能力。同时,它还可以减少线程切换的开销,避免线程间的竞争和同步问题。 总之,挂起协程不会阻塞底层线程的意思是,协程可以在等待阻塞操作完成期间,让底层线程执行其他协程,以提高程序的并发性和性能。 ### 回答3: 底层线程指的是运行在操作系统底层的线程,这些线程与程序的执行无关,并且由操作系统进行管理和调度。在多线程编程中,底层线程负责执行代码中的任务,如并发处理、计算等。而协程是一种轻量级线程,它可以在程序中的某个位置暂停执行,并在需要时恢复继续执行,它可以有效地实现非阻塞的并发操作。 在协程中,挂起操作是指协程在需要等待某个事件完成或等待其他协程的执行结果时,暂停当前协程的执行,将执行权交还给底层线程,让其他协程或任务继续执行。挂起协程可以选择在后续某个时间点继续执行,也可以通过事件触发等方恢复执行。 底层线程不会阻塞是指在某个协程挂起时,底层线程不会停止或等待,而是继续执行其他任务或协程。这样可以充分利用底层线程的资源,提高并发处理的效率。当挂起协程需要恢复执行时,底层线程可以立即分配执行资源,从而实现非阻塞的异步操作。 总之,挂起协程不会阻塞底层线程意味着通过协程挂起操作,可以使底层线程在执行其他任务时不受阻碍,提供了一种高效的并发编程方
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值