coroutine相关内容

“收益来自"是什么意思?asyncio 中的语法 do 以及它与“await"有何不同?

从写过 asyncio 代码但希望更好地了解内部工作原理的人的角度来看,什么是 yield from、await 以及这些对允许有什么用异步代码? 有一个 高度赞成 询问yield from 语法和解释 async 和 await,但两者都深入探讨了不同的主题,并不是对底层代码及其如何与 asyncio 配合的简明解释. 解决方案 简短回答: yield from 是等待 as ..
发布时间:2021-12-27 23:34:42 Python

Python 原生协程和 send()

基于生成器的协程有一个 send() 方法,它允许调用者和被调用者之间进行双向通信,并从调用者恢复生成的生成器协程.这是将生成器变成协程的功能. 虽然新的原生 async/await 协程为异步 I/O 提供了出色的支持,但我不知道如何使用它们获得 send() 的等效项.明确禁止在 async 函数中使用 yield,因此原生协程只能使用 return 语句返回一次.尽管 await 表达 ..
发布时间:2021-12-27 23:30:51 Python

协程和 while 循环

我一直在沿着我从 Navmesh Unity3d 获得的路径上进行对象移动我正在使用协程,我用 while 循环控制它,因为我可以显示 public void DrawPath(NavMeshPath pathParameter, GameObject go){Debug.Log("路径参数" + pathParameter.corners.Length);if (agent == null ..
发布时间:2021-12-26 18:35:45 C#/.NET

如何停止协程?

当两个协程正在运行时,如何停止第一个协程? GLOBALS.stableTime = 5;IEnumerator 稳定等待时间(){yield return new WaitForSeconds (1f);如果(GLOBALS.stableTime == 0){GameManager.instance.LevelFaildMethod();} 别的 {GameManager.instance.s ..
发布时间:2021-12-11 17:29:33 C#/.NET

协程是 Unity3D 中的一个新线程吗?

我对 协程(在 Unity3D 或其他地方)工作.协程是一个新线程吗?Unity 的 documentation 他们说: 协程是一个可以暂停执行(yield)直到给定的 YieldInstruction 完成的函数. 他们有 C# 示例这里: 使用UnityEngine;使用 System.Collections;公共类示例:MonoBehaviour {无效开始(){打印(“开始 ..
发布时间:2021-12-11 17:20:03 C#/.NET

如何在其他协程启动之前先完成一个协程

嗨,我是 unity 和 c# 的新手.. 我在同一个场景中有两个脚本文件, 文件 versionchecker.cs 中的 1 个协程以从我的网络服务器获取版本号数据 public string versionURL = "http://localhost/check.php";IEnumerator GetVersion(){WWW vs_get = new WWW(versio ..
发布时间:2021-12-11 17:05:03 C#/.NET

在继续使用函数 C# Unity 之前等待协程完成

我正在 Unity2d 中使一个单位在网格中移动.我让运动毫无问题地工作.我希望函数 MovePlayer 等到协程完成后再继续,所以程序会等到玩家完成移动后再发出更多命令. 这是我的代码:公共类播放器:MonoBehaviour { public Vector3 位置;私有 Vector3 目标位置;私人浮动速度;虚无觉醒(){速度 = 2.0f;位置 = gameObject.tran ..
发布时间:2021-12-11 17:04:30 C#/.NET

Unity - IEnumerator 的收益返回 null

我目前正在尝试了解 IEnumerator &Unity 上下文中的协程,并且对“yield return null"执行的内容不太有信心.目前我相信它基本上会暂停并等待下一帧,并且在下一帧中它会再次返回执行 while 语句. 如果我省略“yield return null",对象似乎会立即移动到其目的地,或者“跳过很多帧".所以我想我的问题是这个 while 循环中的“yield ret ..
发布时间:2021-12-11 16:59:37 C#/.NET

Unity - 只有在协程完成后才需要返回值

我正在统一开发一款游戏,但遇到了一个我无法解决的问题.我正在通过标准 WWW 对象连接到 Web 服务器并使用协程来执行 POST 请求. 代码本身有效,但我需要更新一个变量值并在协程完成后返回该变量,而我无法做到这一点. public int POST(string username, string passw){WWWForm 表单 = new WWWForm();form.AddFi ..
发布时间:2021-12-11 16:42:42 C#/.NET

使用 Retrofit、Coroutines 和 Suspend 函数的并行请求

我正在使用 Retrofit 来发出一些网络请求.我还将协程与“暂停"功能结合使用. 我的问题是:有没有办法改进以下代码.这个想法是并行启动多个请求并等待它们全部完成,然后再继续该功能. lifecycleScope.launch {尝试 {itemIds.forEach { itemId ->withContext(Dispatchers.IO) { itemById[itemId] = ..
发布时间:2021-12-10 17:42:25 移动开发

如何在 Kotlin 协程中使用依赖于 ThreadLocal 的代码

某些 JVM 框架使用 ThreadLocal 来存储应用程序的调用上下文,例如 SLF4j MDC、事务管理器、安全管理器等. 但是,Kotlin 协程是在不同的线程上分派的,那么它如何才能工作呢? (问题的灵感来自 GitHub 问题) 解决方案 Coroutine 与 ThreadLocal 的类比是 CoroutineContext. 要与 ThreadLocal ..
发布时间:2021-12-10 17:23:26 其他开发

可以“实验"吗?Kotlin 协程可以在生产中使用吗?

Kotlin 协程可以在生产中使用吗,它们的实验状态意味着什么? 解决方案 UPDATE:Kotlin 协程从 Kotlin 1.3 开始不再是实验性的. Kotlin 协程可以并且应该在生产中使用.这是在 Kotlin 1.1 中正式发布它们的主要原因.发布它们后,JetBrains 团队承诺在次要版本的发展过程中保持对在次要版本中引入的任何更改的向后兼容性,同时允许人们在复杂的生 ..
发布时间:2021-12-10 17:09:23 其他开发

Kotlin 协程在 Android 中的正确方式

我正在尝试使用异步更新适配器内的列表,我可以看到样板太多. 这是使用 Kotlin 协程的正确方法吗? 可以进一步优化吗? fun loadListOfMediaInAsync() = async(CommonPool) {尝试 {//长时间运行的任务adapter.listOfMediaItems.addAll(resources.getAllTracks())runOnUiThr ..
发布时间:2021-12-10 16:59:22 移动开发

Kotlin 协程中的 launch/join 和 async/await 有什么区别

在 kotlinx.coroutines 库中,您可以使用 launch(使用 join)或 async 启动新的协程>(带有 await).它们之间有什么区别? 解决方案 launch 用于触发和忘记协程.这就像开始一个新线程.如果 launch 中的代码因异常而终止,那么它在线程中被视为未捕获异常——通常在后端 JVM 应用程序中打印到 stderr 并使 Android 应用程序 ..
发布时间:2021-12-10 16:51:42 其他开发

“协程"和“协程"之间的区别和“线程"?

“协程"和“线程"有什么区别? 解决方案 协程是一种顺序处理形式:在任何给定的时间只有一个正在执行(就像子例程 AKA 过程 AKA 函数——它们只是在每个其他更流畅). 线程(至少在概念上)是一种并发处理形式:多个线程可以在任何给定时间执行.(传统上,在单 CPU、单核机器上,这种并发性是在操作系统的帮助下模拟的——如今,由于如此多的机器是多 CPU 和/或多核的,线程将事实上的 ..
发布时间:2021-11-17 01:49:25 其他开发

如何防止我的代码产生每一帧?

我正在调用一种方法,该方法调用自身以爬过地形并创建区域.然而,当区域变大时,进程以堆栈溢出结束.通过强制代码让步并花时间它成功完成并爬行我地图中的 3 个区域.然而,我使用的方法是产生每一帧,我不知道如何让它每 100 帧产生一次,导致它完成得非常慢.这是我为可读性所做的伪代码: 公共整数定时器 = 0;无效唤醒(){StartCoroutine(crA);}公共 IEnumerator crA ..
发布时间:2021-09-14 19:34:28 C#/.NET

LLVM 错误无法选择内部 %llvm.coro.begin

我正在学习LLVM中的协程功能,并且一直在基于示例. 当我尝试对生成的位代码运行 llc 时,收到错误消息 LLVM错误:无法选择:固有%llvm.coro.begin .到目前为止,我发现的唯一类似错误是由于某些平台不支持 i1 布尔值,但是我调用的所有内在函数都不使用 i1 . 这是LLVM IR,我已删除了对 llvm.coro.begin 的调用后将发生的所有逻辑,以降低发生错 ..
发布时间:2021-05-30 19:41:11 其他开发