- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我理解正确的话,挂起函数是您可以在协程内执行的函数,挂起函数的作用是挂起协程,以便另一个协程可以开始工作。现在,这是否意味着当协程挂起时,挂起函数仍在工作?这让我感到困惑,因为我看到很多文本都说它不仅暂停协程,还暂停暂停函数。但是,如果它也暂停了挂起功能,那么如果您想要完成的工作暂停了,那还有什么意义呢?
假设我有一个挂起函数,需要 30 秒才能完成一些数学计算。然后我有另一个协程,它打印了一些简单的文本,例如“Hello,World”。如果第一个协程挂起并转到第二个协程打印问候语,同时还会进行数学计算吗?
最佳答案
Now, does this mean that while the coroutine is suspended that the suspend function is still doing work?
不,这意味着其他函数可以在挂起时执行工作。
This is what confuses me because I've seen many texts say that it pauses not only the coroutine but also the suspend function.
这是正确的。
But if it pauses the suspend function as well then whats the point if the work you wanted to be done is paused?
主要用例是将工作委派给外部资源,尤其是网络层。当您的函数正在等待来自网络的数据时,它没有其他事情可做。与此同时,其他协程可能会继续在同一线程上执行。
Suppose I had a suspend function that takes 30 seconds to finish doing some mathematical calculation.
该函数尽管被声明为可挂起,但实际上可能不会自行挂起。它会一直占用调用线程。
And then I had another coroutine that said printed some simple text like "Hello, World".
如果您使用的是单线程调度程序,则该协程必须等待轮到第一个协程显式挂起自身,这在您提到的 CPU 密集型函数中可能不会发生。
If the first coroutine suspends and goes to the second coroutine to print the greeting, would mathematical calculation still be happening at the same time?
不,挂起的协程不执行任何工作。
例如,第一个协程可以在其计算循环中调用yield(),从而允许 Kotlin 挂起它并在同一线程上运行一些其他协程。暂停期间不会取得任何进展。你可以这样看:假设有一个线程运行所有协程。它们运行的方式称为“合作并发”。协程必须显式挂起自身以允许其他协程运行。这与在单个 CPU 核心上同时运行的多个线程非常相似,只不过操作系统可以做另一件“神奇”的事情:它可以随时挂起线程,而无需该线程的许可。这就是为什么这种类型被称为抢占式并发。
关于kotlin - 对 Kotlin 与协程相关的挂起函数感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59586857/
我正在尝试学习Rust。我正在阅读一本书online,该书实现了unix程序cat。现在,我试图读取作为像cargo run file1.txt file2.txt这样的参数传递的文件的内容,但是程序
我在 GHC 8.0.1 中遇到了一个带有种类索引 (?) GADT 的奇怪情况,其中在类型与种类签名中引入 foralls 会产生不同的类型检查行为。 考虑以下数据类型: {-# LANGUAGE
我正在使用 Perl 5.10 开发应用程序,HTML::Mason和 Apache 2.2。这是我第一次在大型项目中使用 Perl 5.10。我每隔一段时间就会出现奇怪的行为。应用程序因一个非常奇怪
我正在尝试将文件上传到aws中的rust中,因为我使用的是 rusoto_s3 的s3 rust客户端,当这些部分从单个线程发送时,我设法使分段上传代码正常工作不是我想要的,我想上传大文件,并且希望能
我是一名优秀的程序员,十分优秀!