我有一些关于Coroutines的问题:我能不能并行地推出大量的协同工作呢?
例如,我有一个对象列表,对于每个对象,我想做一些繁重的工作。
for循环并在一次为每个对象启动一个Coroutine吗?发布于 2020-01-14 15:48:51
我能否并行推出大量的协同工作,并进行繁重的工作?
可以,停那儿吧。Coroutines非常轻量级。事实上,许多协同工作的例子表明,您可以在一次启动数千个协同线。
我可以做一个For循环,并在一次为每个对象启动一个协同器吗?
可以,停那儿吧。虽然我不知道那会有多高的效率。
如何并行处理大量的工作?
Coroutines有Dispatchers的概念,它允许您配置线程。
如果内存太低,那么Coroutine会在启动另一个Coroutine之前等待吗?
Coroutines的行为类似于轻量级的Threads,因此内存管理取决于您。如果系统没有足够的内存,我不知道有一个内置的机制可以阻止协同线的启动。同样,coroutines是轻量级的,所以如果您不能启动协同器,那么可能是出了问题。
例如,最好用newFixedThreadPoolContext限制协同工作?
通过使用newFixedThreadPoolContext,您并没有真正限制您可以启动的协同服务的数量。您只是对将要创建的用于启动协同线的ThreadPool强制执行一个限制。同样来自newFixedThreadPoolContext 文档,请注意,它将在未来被替换。
https://stackoverflow.com/questions/59736855
复制相似问题