29 ms·
"The concurrency stories for Erlang and Go are front and center, very well defined, and obvious." GHC Haskell basically have the same concurrency story (since
by szemet 9y ago
"The concurrency stories for Erlang and Go are front and center, very well defined, and obvious."
GHC Haskell basically have the same concurrency story (since ghc 7.0.1 - 16 November 2010 [1]):
- You can start ten or even hundred thousands of threads
- Inside them you can program like having synchronous I/O
- And the runtime handles it efficiently (with epoll/kqueue/...)
The difference is that haskell is less opinionated on the high level concurrency primitives, so you have many choices (sometimes with multiple different library implementations) like: locking, explicit async code, transactional memory, channels... https://hackage.haskell.org/packages/#cat:Concurrency https://hackage.haskell.org/packages/#cat:Concurrency
[1] Release Notes: "On POSIX platforms, there is a new I/O manager based on epoll/kqueue/poll, which allows multithreaded I/O code to scale to a much larger number (100k+) of threads" https://downloads.haskell.org/~ghc/7.0.1/docs/html/users_guide/release-7-0-1.html https://downloads.haskell.org/~ghc/7.0.1/docs/html/users_gui...