Go is the language of API servers, of protocols and of network daemons. And while sometimes the standard library provides all the abstractions we need, that means interacting with net.Conn. Thanks to the freedom of blocking goroutines, Go developed its own patterns in interacting with asynchronous networking. In Filippo’s tutorial session, he will go over some of the most common, useful or tricky patterns, with examples from the standard library and other popular projects.
First, he will look at the basic interaction of goroutines with net.Listener, the accept loop, and spawning servicing goroutines. Next, Filippo will focus on how to manage and schedule resources. Finally, he will look at how to test, benchmark, and extend net.Conn implementations by wrapping them.
By the end, this session should give you an understanding of what is going on in packages like net/http and crypto/tls, or what you need to keep in mind while developing network protocol implementations.