logoalt Hacker News

SamInTheShell • today at 12:39 AM • 5 replies • view on HN

The concurrency and threading in Go just feels like magic compared to every other language. I'm a goroutine addict and I refuse to be rehabilitated.

Just from observations over the years, I don't think there's any other language quite like this, in terms of how things can end up happening in any thread.


Replies

hank1931 • today at 3:40 AM

How about Erlang or Elixir using BEAM?

Supposedly WhatsApp scaled to serving over 1 billion users with Erlang and BEAM.

RabbitMQ, used by Reddit, uses Erlang and BEAM.

Discord uses Elixer and BEAM.

I just traveled down the BEAM rabbit hole. Fascinating story. The Ericsson Computer Science Laboratory cranked out some amazing products in the early 1990's.

Their goal was five nines of reliability for Ericsson telephone switches.

According to Joe Armstrong (an interesting fellow from Ericsson), the AXD301 ATM switch achieved nine nines over a nine-month period using Erlang and BEAM in 2002. That calculates out to 24 milliseconds of downtime.

➕ show 2 replies
osigurdson • today at 1:27 AM

>> in terms of how things can end up happening in any thread

Doesn't that describe pretty much any green thread style concurrency implementation.

➕ show 1 reply
signa11 • today at 3:16 AM

erlang would like to have a word.

kccqzy • today at 1:27 AM

I learned Haskell before that, and frankly the concurrency in Go feels similar, but is a definite downgrade due to the lack of STM.

You can implement channels and select using STM, so these don’t have to be in the standard library. And the contentious design choices like what happens when you close the channel twice can be your choice! And going from STM to managing mutexes is a definite downgrade in abstraction power.

The concurrency design in Haskell feels like true magic.

➕ show 1 reply
chimbambum • today at 12:43 AM

any downsides to it in your experience?

➕ show 4 replies