|
You are here |
jbrandhorst.com | ||
| | | | |
aarol.dev
|
|
| | | | | Compared to Javascript, Python and other single threaded languages, Go takes a very different approach to I was having difficulties understanding how concurrent ... | |
| | | | |
blog.owulveryck.info
|
|
| | | | | This is a simple article that describes the wiring of the tool I made for streaming the content of the remarkable 2 on a computer. From the proc filesystem to the gRPC implementation over HTTP/2 via the certificate generation. | |
| | | | |
konradreiche.com
|
|
| | | | | Starting a goroutine is as easy as adding the go keyword in front of a method, but managing the lifecycle of a goroutine is not. If you only need to start a few goroutines and wait for their completion, you are off the hook thanks to sync.WaitGroup. However, what if a goroutine has to run for a specific duration or repeatatly in a loop until the initiating code terminates? Does it matter? After all, if the main goroutine terminates, any other goroutine will also stop. It does matter, because depending on what the goroutines are doing, it might leave your system in an inconsistent or invalid state. Channels are a commonly used to signal to a goroutine that it can shut down, but I often see the use of a signaling channel, for example chan bool or chan struct{}... | |
| | | | |
boats.gitlab.io
|
|
| | | In the previous post I said that in the second post in the series we'd talk about how rooting works. However, as I sat down to write that post, I realized that it would be a good idea to back up and give an initial overview of how a tracing garbage collector works - and in particular, how the underlying garbage collector in shifgrethor is implemented. In the abstract, we can think of the memory of a Rust program with garbage collection as being divided into three sections: the stack, the "unmanaged" heap... | ||