草庐IT

Kotlin协程:MutableSharedFlow的实现原理

一.MutableSharedFlow接口的实现1.MutableSharedFlow方法在Koltin协程:异步热数据流的设计与使用中,提到了可以通过MutableSharedFlow方法创建一个MutableSharedFlow接口指向的对象,代码如下:@Suppress("FunctionName","UNCHECKED_CAST")publicfunMutableSharedFlow(replay:Int=0,extraBufferCapacity:Int=0,onBufferOverflow:BufferOverflow=BufferOverflow.SUSPEND):Mutable

Kotlin 协程之取消与异常处理探索之旅(上)

前言协程系列文章:一个小故事讲明白进程、线程、Kotlin协程到底啥关系?少年,你可知Kotlin协程最初的样子?讲真,Kotlin协程的挂起/恢复没那么神秘(故事篇)讲真,Kotlin协程的挂起/恢复没那么神秘(原理篇)Kotlin协程调度切换线程是时候解开真相了Kotlin协程之线程池探索之旅(与Java线程池PK)Kotlin协程之取消与异常处理探索之旅(上)Kotlin协程之取消与异常处理探索之旅(下)来,跟我一起撸KotlinrunBlocking/launch/join/async/delay原理&使用我们知道线程可以被终止,线程里可以抛出异常,类似的协程也会遇到此种情况。本篇将从

Kotlin 协程之线程池探索之旅(与Java线程池PK)

前言协程系列文章:一个小故事讲明白进程、线程、Kotlin协程到底啥关系?少年,你可知Kotlin协程最初的样子?讲真,Kotlin协程的挂起/恢复没那么神秘(故事篇)讲真,Kotlin协程的挂起/恢复没那么神秘(原理篇)Kotlin协程调度切换线程是时候解开真相了Kotlin协程之线程池探索之旅(与Java线程池PK)Kotlin协程之取消与异常处理探索之旅(上)Kotlin协程之取消与异常处理探索之旅(下)来,跟我一起撸KotlinrunBlocking/launch/join/async/delay原理&使用上篇文章分析了协程切换到主线程执行的详细流程,本篇将分析如何切换到子线程执行。通

Android 使用Retrofit+协程实现超简单大文件下载并回显进度条

这里直接使用之前文章配置好的傻瓜式网络请求工具来写文件下载,不对Retrofit做过多描述,不清楚的可以看这篇文章>,废话不多说,直接上代码安卓自带的进度条弹窗过时了,这里简单创建一个进度条弹窗在drawable文件夹创建progress_dialog_bg_style.xml一个圆角白色背景样式创建alert_dialog_download_progress.xml布局创建弹窗工具类,使用刚才创建好的布局objectDialogUtil{/***下载进度条弹窗*/funshowDownloadProgress(context:Context,title:String?=null):Alert

Swoole协程系统HTTP服务

先启动宝塔 /etc/init.d/btstart源码参考https://github.com/zhangyue0503/swoole/tree/main/4.Swoole%E5%8D%8F%E7%A8%8B对于异步来说,我们需要监听事件,并且监听的进程是并发的,所以会有一个问题,那就是无法保证前后顺序。$serv=newSwoole\Server("0.0.0.0",9501);//监听连接进入事件$serv->on('Connect',function($serv,$fd){Swoole\Coroutine\System::sleep(5);//此处sleep模拟connect比较慢的情况

简单了解线程和协程(C#)

1.为什么需要线程和协程:(1)使程序中的任务可以并发执行,让程序同时处理多个任务,提高程序的运行效率和响应速度(2)线程和协程可以共享同一个进程的资源,避免多个进程之间的资源浪费(3)可以动态调整程序的并发度,从而提高程序的可伸缩性,以便适应不同的负载情况(4)将程序拆分为多个任务,使程序的结构更清晰,更易维护2.线程和协程的区别:线程是由操作系统调度的,而协程则是由程序自身控制的。线程的应用:(1)可以将一些耗时的操作放在子线程中进行,避免阻塞主线程,提高用户体验。(2)线程可以用来处理一些实时性要求比较高的任务,如网络通信、I/O操作等。协程的应用:(1)可以用来实现游戏中的动画效果,如

python异步协程爬虫报错:【TypeError: object int can‘t be used in ‘await‘ expression】探讨

近日,通过异步协程爬虫抓取rar压缩包文件时,学习运用异步协程来提高效率。但发生如下问题:TypeError:objectintcan'tbeusedin'await'expression研究了好久,发现是在持久化保存时,不能运用整数作为await的参数。 这个错误的原因可能是在async函数中使用了一个整数类型的变量作为await的参数。await只能用于返回协程对象的异步函数,无法使用在普通的同步操作上。要解决这个问题,需要确保await的参数是一个异步函数的返回值。如果我们只是想等待一个时间段后再执行下一个操作,可以使用asyncio.sleep()函数作为协程对象来等待一定的时间。例如

五分钟技术趣谈 | 试论Android异步框架Kotlin协程

Part01 什么是协程 作为开发人员尤其是客户端应用开发,我们一直面临着需要解决的问题——如何防止我们的应用程序被阻塞。考虑下面一个异步应用场景。客户端顺序进行3次网络请求,最后更新UI展示结果。图片图1异步场景有多种方法实现上述需求,主流的包括:回调Rx(反应式扩展)协程1.1回调方式图2 回调代码示例异步回调的方式虽然实现了需求,但是这种结构的代码无论是阅读还是维护起来都是极其糟糕的。这种回调函数的层层嵌套耦合,亲切地称为"回调地狱"。1.2Rx方式图3Rx代码示例Rx系列的链式调用,是在协程之前推荐的做法,RxJava丰富的操作符、简便的线程调度、异常处理使得大多数人满意。但是还有没有

Android上的基于协程的存储框架

在Android上,经常会需要持久化本地数据,比如我们需要缓存用户的配置信息、用户的数据、缓存数据、离线缓存数据等等。我们通常使用的工具为SharePreference、MMKV、DataStore、Room、文件等等。通过使用现有的存储框架,结合协程,我们可以方便地实现一个轻量级的响应式存储框架。在使用的场景上,我们使用Key-Value的场景很多,而且我们往往不仅仅是存储数据、获取数据,经常还有需要序列化存储、加密存储、订阅数据的变化的功能。订阅数据的变化,常见的就是使用发布/订阅模式来实现。但是使用类如EventBus和RxBus并不是一个好的实践,EventBus没有做适当的封装被滥用

Kotlin 协程与生命周期感知组件一起使用

一、build.gradle引入//CoroutineScope生命周期感知组件协程implementation'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0'implementation'androidx.lifecycle:lifecycle-runtime-ktx:2.4.0'implementation'androidx.lifecycle:lifecycle-livedata-ktx:2.4.0'二、ViewModelScope应用中的每一个ViewModel都定义了ViewModelScope。如果ViewModel已清除,则在此