4 ms·
This is helpful. Thanks! I have one more question, how does Go ensure easy concurrency?
by aaggarwal 11y ago
This is helpful. Thanks!
I have one more question, how does Go ensure easy concurrency?
- Blackthorn 11y agoAssuming that's an honest question: it has actual lightweight threads, so you don't need to muck around with either async garbage or worrying that you're using too many threads because you aren't mucking around with async garbage.
- aaggarwal 11y agoYeah,I was reading about the http module and goroutines. It looks nice. Though I still have to try it.
- masklinn 11y agoIt provides built-in lightweight thread abstraction ("goroutines", and "channels" for communication between these). Beware though, Go uses shared-memory concurrency (as opposed to, say, Erlang) so if you pass a pointer to a mutable structure through a channel the structure won't be copied or moved, both sides will be able to alter it. It does provide a data race detector but it's just that, you have to hit the corruption path while running the detector for it to have a chance, I'm not sure it's 100% even if you do, and I understand it has a non-trivial runtime cost and limitations wrt number of routines it can track.
- aaggarwal 11y agoThanks for informing, that is an important point to keep in mind, ignoring this would lead to potential bugs and very difficult debugging as you said.