News for hackers. Stuff that matters.
Re:Evio – Fast event-loop networking for Go by pcwalton on Saturday November 04, 2017 @04:09PM (#15626668)
In other words, Go uses threads.

There's nothing semantically unique to Go about this model.

Re:Evio – Fast event-loop networking for Go by giovannibajo1 on Saturday November 04, 2017 @06:17PM (#15627171)
It depends if you're describing a semantic model or you're concerned about implementation details.

Semantically, a goroutine is a thread, within a shared memory model. But what makes Go unique (or let's say more unique) is that it offers programmers a thread-like programming approach (linear, blocking code) but internally turns it into an event-driven approach (epoll/kqueue) for networking.

Moreover, the fact that goroutines are much cheaper than OS-level threads enable a more pervasive approach to concurrency.

Re:Evio – Fast event-loop networking for Go by cdoxsey on Saturday November 04, 2017 @04:22PM (#15626724)
Go uses an m:n thread model. Goroutines are multiplexed onto a smaller number of os-level threads. They're sort of like threads, but they have a simplified programming model (There is no thread-level storage for example).
Re:Evio – Fast event-loop networking for Go by pcwalton on Saturday November 04, 2017 @04:23PM (#15626729)
Goroutines are threads. They're just not kernel-level threads.

There have been implementations of pthreads that used an M:N model, for instance.

Re:Evio – Fast event-loop networking for Go by weberc2 on Saturday November 04, 2017 @09:00PM (#15627643)
For my information, why is M:N so successful for Go and not for pthreads? Is M:N more practical for systems with a particular kind of garbage collector?
Re:Evio – Fast event-loop networking for Go by pcwalton on Sunday November 05, 2017 @12:06PM (#15630292)
In my opinion, it's because the Go team put a ton of effort into getting M:N working and didn't rigorously evaluate any other alternatives in Go, once moving GC was implemented.

I'm not convinced that 1:1 wouldn't have been a perfectly reasonable implementation strategy for Go.

Re:Evio – Fast event-loop networking for Go by weberc2 on Sunday November 05, 2017 @02:33PM (#15631117)
This is surprising. It seems like Go gets pretty high praise from all over for its threading model, and it seems like there are relatively few high-performance servers that are built with 1:1. Am I wrong about that? If not, what explains this?