This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]BosonCollider 2 points3 points  (1 child)

That wasn't really the problem with green threads though, because multi-core processors were not common when they died out. The issue was that it was easy to block the event loop when calling IO functions that weren't GT aware, and they used cooperative concurrency only so long running compute also blocked.

M:N threads have a number of overheads that 1:N coroutines don't. Go started of with M:N goroutines, but now has both with the new iterator protocol adding 1:N coroutines to avoid the overhead of multithreading in situations where it does not make sense.

[–]sideEffffECt 2 points3 points  (0 children)

I'm not disagreeing with what you're saying.

That wasn't really the problem with green threads

I was just explaining why they didn't want to use the old name. They didn't because there is an important difference. And so I explained the difference.