vlad1010
Hi everyone, sorry for the dumb question. But I am a newbie in elixir came from golang.
I really love elixir and FP style, I try to implement some basic feature and had an issue with race conditions on channel connection. For example, in golang I resolved it with Mutex, but it’s not FP style.
Initial problem:
Several channel connections, waiting for the group of random amount for example 5. And then randomly shuffle people. In this case, I had some problems with “race condition”. Same people to different groups etc.
What is the right idiomatic way to solve this in Elixir?
Thank you for your help. And sorry again for a dumb question.
Trending in Questions
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
Hello,
I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
So my question is quite simple and i have found no conclusive answer on forum, google or AI.
Should we use :erlang.float for Integer to ...
New
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
I’m new to elixir and just tried to install the elixirLS extension for VScode(ium) and it is throwing some errors that I would like help ...
New
Other Trending Topics
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hi there! We created Gust: A task orchestrator inspired by Airflow.
For those who have never heard about Aiflow, it’s a Python-based wor...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #ai
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #elixirconf-eu
- #metaprogramming
- #hex











Showing Posts 1 to 2- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
sb8244
I struggled with the concept of mutexes a lot when I first started out (beam does have them, but not commonly used). I often asked my coworker “but what about race conditions? How does it solve for them?” He said something along the lines of “they didn’t solve them, they just don’t exist.”
That’s a bit tongue in cheek because of course they can still exist. However, GenServer makes it possible to solve many classes of problem that would be an issue and need mutexes in other languages. I’d say a large reason that mutexes are used in other languages just aren’t needed. The reason for this is that a GenServer can process one message at a time.
In this case, I’d probably have a GenServer that knows about all users connected (via some sort of registration mechanism such as a Registry), and then it shuffles and passes a message to each when 5 join.
This becomes harder when distributed because you need all 5 players to be on the same GenServer. This is easiest when they’re on the same Beam Node. There are techniques to solve this distributed, still GenServer without mutexes, but requires a bit more mechanism.
Also, welcome to the Elixir forum!
vlad1010
Thanks a lot @sb8244. I heard about the friendly elixir community. Perhaps I’m making stupid mistakes, I just decided to get my hands dirty so that I could roll in faster and understand what and why I need.