actor

actor

Use cases of coroutines in elixir

I am new to elixir and also the concept of co-routines. I am trying to warp my head around how we can make use of time slice like explained here https://stackoverflow.com/a/19033882/492293

Lets say i have a list with 10,000 items and i want to process the list with coroutines.

Lets say i have 5 coroutines that i am using to process the list. My thinking is that i divide the list of 10,000 between the 5 coroutines and have each coroutine assigned 2,000 items.

I would then use time slice to visit each 2,000 items make some progress jump to the next do the same and do this until each and every item in the groups of 2000 are all visited and processed.

Is this an acceptable use of time slice or wouldn it be faster to just process the 20,000 in one function?.

Thanks.

Most Liked

al2o3cr

al2o3cr

Under the hood, the BEAM is already doing a sort of time-slicing:

For your case of a large list, look into Task.async_stream which does something very close to what you’ve described (spins up multiple processes to work through a large list).

NobbZ

NobbZ

There are no coroutines in elixir.

dimitarvp

dimitarvp

Using Elixir builtins like Task.async_stream and the Flow library gives you transparent parallelism / concurrency, and having in mind that the Erlang/Elixir runtime (the BEAM VM) is already preemptively scheduled then you get parallel computations almost for free and with very little syntactic overhead.

I strongly recommend you review both linked docs.

And yep, as others said, Erlang/Elixir already have “coroutines” in the form of processes (not to be confused with OS processes) that are fairly time-sliced, automatically for you.

Last Post!

actor

actor

Thanks everyone for the answers. I appreciated

Where Next?

Popular in Questions Top

hariharasudhan94
lets say i have a sample like a = 20; b = 10; if (a > b) do {:ok, "a"} end if (a < b) do {:ok, b} end if (a == b) do {:ok, "equa...
New
Emily
I have VueJS GUIs with the project generated using Webpack. I have Elixir modules that will need to be used by the VueJS GUIs. I forese...
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New
PeterCarter
There are pre-rolled solutions for other frameworks that do work. However, Phoenix does not seem to have these. Have people had good expe...
New
9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New

Other popular topics Top

greenz1
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 44139 214
New
saif
Hello everyone, Long time lurker first time poster here. I’ve recently begun working on Elixir full-time again! :raised_hands: It’s been...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New

We're in Beta

About us Mission Statement