# Go Concurrency Visually Explained — Semaphore ![rw-book-cover](https://miro.medium.com/v2/da:true/resize:fit:1000/0*9NlZTP5nLAUzW-R9) ## Metadata - Author: [[Brian NQC]] - Full Title: Go Concurrency Visually Explained — Semaphore - Category: #articles - Summary: Go Concurrency Visually Explained — Semaphore: This article explains the concept of Semaphore in Go programming language through a visual analogy of swimmers sharing swimming lanes. It demonstrates how Semaphore can be used to control concurrent access to shared resources, allowing a limited number of Goroutines to access the resource at the same time. The article also provides code examples on how to implement Semaphore using the built-in sync package or by creating a custom Semaphore using channels. - URL: https://blog.stackademic.com/go-concurrency-visually-explained-semaphore-3ffe23f11388 ## Highlights - at the airport, no matter how long the queue of passengers is, the maximum number of passengers allowed to check-in concurrently is the number of open counters. In computer science, such concurrent access use cases are modelled with **Semaphore**. In this article, I will be visually explaining how **Semaphore** works. I will also share with you a simple way to implement **Semaphore** using channels in Golang. ([View Highlight](https://read.readwise.io/read/01jv3atatb9s9er8tybsbwh67m))