首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合作极限?

合作极限?
EN

Stack Overflow用户
提问于 2020-01-14 15:25:19
回答 1查看 941关注 0票数 2

我有一些关于Coroutines的问题:我能不能并行地推出大量的协同工作呢?

例如,我有一个对象列表,对于每个对象,我想做一些繁重的工作。

  • 我可以做一个for循环并在一次为每个对象启动一个Coroutine吗?
  • 如何并行处理大量的工作?
  • 如果内存太低,Coroutine会在启动另一个Coroutine之前等待吗?
  • 例如,最好用newFixedThreadPoolContext限制协同工作?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-14 15:48:51

我能否并行推出大量的协同工作,并进行繁重的工作?

可以,停那儿吧。Coroutines非常轻量级。事实上,许多协同工作的例子表明,您可以在一次启动数千个协同线。

我可以做一个For循环,并在一次为每个对象启动一个协同器吗?

可以,停那儿吧。虽然我不知道那会有多高的效率。

如何并行处理大量的工作?

Coroutines有Dispatchers的概念,它允许您配置线程。

如果内存太低,那么Coroutine会在启动另一个Coroutine之前等待吗?

Coroutines的行为类似于轻量级的Threads,因此内存管理取决于您。如果系统没有足够的内存,我不知道有一个内置的机制可以阻止协同线的启动。同样,coroutines是轻量级的,所以如果您不能启动协同器,那么可能是出了问题。

例如,最好用newFixedThreadPoolContext限制协同工作?

通过使用newFixedThreadPoolContext,您并没有真正限制您可以启动的协同服务的数量。您只是对将要创建的用于启动协同线的ThreadPool强制执行一个限制。同样来自newFixedThreadPoolContext 文档,请注意,它将在未来被替换。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59736855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档