jjzjj

Coroutine

全部标签

java - Java 中可用的协程库

我想在Java中做一些事情,如果使用并发例程编写会更清晰,但对于这些事情来说,全线程是严重的过度杀伤力。答案当然是使用coroutines,但标准Java库中似乎没有任何协程支持,并且快速谷歌上它会在这里或那里带来诱人的提示,但没有什么实质性的。这是我目前发现的:JSIM有一个协程类,但它看起来很重量级,并且似乎与点处的线程。这样做的目的是降低全线程的复杂性,而不是增加它。此外,我不确定该类是否可以从库中提取并独立使用。Xalan有一个协程集类,它可以做类似协程的东西,但是如果这个又是可疑的可以从整个库中有意义地提取。它看起来也被实现为严格控制形式的线程池,而不是实际的协程。有一个Go

c++ - "With a stackless coroutine, only the top-level routine may be suspended."是什么意思

我从here中找到了那个声明.起初我很惊讶,因为我相信这使得无堆栈协程几乎毫无用处(而且C++协程TS是无堆栈的)。所以我写了一个demo(在visualstudio中使用C++协程TS):#include#include#include#include#include#includeusingnamespacestd;usingnamespacestd::chrono;usingnamespacestd::experimental;classAsyncQueue{public:classAwaitable{friendAsyncQueue;AsyncQueue&mQueue;coro

android - 为什么这个 Kotlin Coroutine 会卡住界面?

因此,我让这段代码在“onBindViewHolder”回收器的适配器方法中运行:launch(UI){valbitmapDrawable=loadLargeBitmapDrawable()imageView.setImageDrawable(bitmapDrawable)}这让我的应用卡住了几秒钟,锁定了我的主线程。但后来我改成了这样:launch{//为什么会这样?协同程序的目的是使同一线程(UI)内的事物异步,对吧?有人可以解释为什么我必须在另一个协程范围内运行UI协程吗? 最佳答案 Thepurposeofcoroutine

generator - 作为扩展函数调用的序列生成器失败并显示 "receiver type mismatch"

我正在尝试从添加到LongRange的单个Long值生成序列。这有效:valseq=buildSequence{yield(2)yieldAll(3L..5)}但试图概括它,我似乎无法构造一个我可以成功调用的扩展函数:infixfunLong.join(R:LongRange):Sequence{valstart=thisreturnbuildSequence{yield(start)yieldAll(R)}}当我尝试调用它时:(2join3..5).forEach{/*dosomething*/}我明白了Error:(26,20)Kotlin:Unresolvedreference.

generator - 作为扩展函数调用的序列生成器失败并显示 "receiver type mismatch"

我正在尝试从添加到LongRange的单个Long值生成序列。这有效:valseq=buildSequence{yield(2)yieldAll(3L..5)}但试图概括它,我似乎无法构造一个我可以成功调用的扩展函数:infixfunLong.join(R:LongRange):Sequence{valstart=thisreturnbuildSequence{yield(start)yieldAll(R)}}当我尝试调用它时:(2join3..5).forEach{/*dosomething*/}我明白了Error:(26,20)Kotlin:Unresolvedreference.

android - 在主线程外运行时对 Cloud Firestore 进行同步调用

我正在基于AndroidCleanArchitectureKotlin版本(https://github.com/android10/Android-CleanArchitecture-Kotlin)构建应用。使用这种架构,每次你想调用一个用例时,都会启动一个Kotlin协程,并将结果发布到主线程中。这是通过以下代码实现的:abstractclassUseCasewhereType:Any{abstractsuspendfunrun(params:Params):Eitherfunexecute(onResult:(Either)->Unit,params:Params){valjob

android - 在主线程外运行时对 Cloud Firestore 进行同步调用

我正在基于AndroidCleanArchitectureKotlin版本(https://github.com/android10/Android-CleanArchitecture-Kotlin)构建应用。使用这种架构,每次你想调用一个用例时,都会启动一个Kotlin协程,并将结果发布到主线程中。这是通过以下代码实现的:abstractclassUseCasewhereType:Any{abstractsuspendfunrun(params:Params):Eitherfunexecute(onResult:(Either)->Unit,params:Params){valjob

kotlin - 为什么无法在 Kotlin 中使用对 `suspend` 函数的方法引用?

我有一个Job实例列表,我想在启动后的某个时间点取消这些实例。如下所示:valjobs=arrayListOf()//launchandaddjobs...jobs.forEach{it.cancelAndJoin()}//cancelsthejobsandwaitsforcompletion很遗憾,这里不能使用方法引用。原因:cancelAndJoin是一个suspend函数,编译器提示:jobs.forEach(Job::cancelAndJoin)“错误:(30,24)Kotlin:Unsupported[Callablereferencestosuspendfunctions]

kotlin - 为什么无法在 Kotlin 中使用对 `suspend` 函数的方法引用?

我有一个Job实例列表,我想在启动后的某个时间点取消这些实例。如下所示:valjobs=arrayListOf()//launchandaddjobs...jobs.forEach{it.cancelAndJoin()}//cancelsthejobsandwaitsforcompletion很遗憾,这里不能使用方法引用。原因:cancelAndJoin是一个suspend函数,编译器提示:jobs.forEach(Job::cancelAndJoin)“错误:(30,24)Kotlin:Unsupported[Callablereferencestosuspendfunctions]

kotlin - 在 IntelliJ IDEA 项目中使用 kotlinx.coroutines

我正在尝试学习协程,因此我启动了IntelliJ并创建了一个暂存文件。但是当我输入协程时,我会收到编译器投诉,例如runBlockingisanunresolvedreference。所以这不是一个android项目或任何类似的东西。只是一个基本Kotlin项目中的临时文件。如何引入协程的东西,以免出错? 最佳答案 runBlocking和其他高级协程实用程序不在Kotlin标准库中,而是库的一部分kotlinx.coroutines.要在您的项目中使用此库,您必须下载其二进制文件并将对它们的依赖项添加到项目中。如果您使用Gradl