Blog
Comparison to Our Original Approach
Tuesday, March 26, 2024 in Blog
Categories:
… continued from the previous post. Refactor Our Original Approach What we have done to the previously can also be done to the approach using an error channel: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 …
An Alternative Approach
Monday, March 25, 2024 in Blog
Categories:
… continued from the previous post. Do Not Communicate by Sharing Memory; Instead, Share Memory by Communicating1 This approach can be taken too far. […] But as a high-level approach, using channels to control access makes it easier to …
Structured Concurrency
Friday, March 22, 2024 in Blog
Categories:
… continued from the previous post. Different Categories of Concurrency When recalling the previous article, a task was subdivided into three subtasks, all working towards a common objective (specifically, merging contributors). The subtasks …
Resource Leaks
Thursday, March 21, 2024 in Blog
Categories:
Series:
… continued from the previous post. Problems With Concurrency In the first post of this series I was citing two papers that examined common bugs in handling of Go concurrency. We took a long time to arrive here, but I wanted to show that …
Avoiding Unnecessary Work
Wednesday, March 20, 2024 in Blog
Categories:
Series:
… continued from the previous post. Cancelation Assume we have only a limited amount of time and want to use the data we have until this point. While we could build our own solution, but Go has context.WithTimeout since version 1.7. Let us …
Using Goroutines Will Not Grant You Another CPU Core
Tuesday, March 19, 2024 in Blog
Categories:
Series:
… continued from the previous post. Back to the Drawing Board Let us keep the original Slow implementation and move parallelization to main: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 package main import ( "sync" …
Goroutines Are Cheap, but Not Free
Monday, March 18, 2024 in Blog
Categories:
Series:
Concurrency Is Not Parallelism1 Recently two interesting observations in “A Study of Real-World Data Races in Golang”2 caught my eye: Observation 1. Developers using Go employ significantly more concurrency and synchronization constructs than in …