| ▲ | assbuttbuttass 2 hours ago | ||||||||||||||||
> Your entire codebase is now a surface area that is at risk of being blocked The point of goroutines is that they can freely block when needed. It's not like async where you have to be paranoid at every moment about writing blocking code | |||||||||||||||||
| ▲ | sheept an hour ago | parent | next [-] | ||||||||||||||||
Why would there be paranoia when writing blocking code with async? The downside of goroutines is that you have no control when the goroutine context switches, so naively accessing a global value can lead to race conditions (which the language has no warnings for despite being such a concurrent language), while the same code works fine in JavaScript because context switches don't happen in synchronous code. | |||||||||||||||||
| |||||||||||||||||
| ▲ | stymaar 2 hours ago | parent | prev [-] | ||||||||||||||||
You can only freely block the goroutines that you designed that way, there's plenty of ways of shooting yourself in the foot with goroutines without even touching “blocking” code (because everything is blocking). | |||||||||||||||||