{"id":13511617,"url":"https://github.com/lotusirous/go-concurrency-patterns","last_synced_at":"2026-01-25T22:04:28.241Z","repository":{"id":37468201,"uuid":"308485332","full_name":"lotusirous/go-concurrency-patterns","owner":"lotusirous","description":"Concurrency patterns in Go","archived":false,"fork":false,"pushed_at":"2024-05-28T00:35:35.000Z","size":30,"stargazers_count":2943,"open_issues_count":4,"forks_count":263,"subscribers_count":32,"default_branch":"main","last_synced_at":"2025-03-30T20:34:27.882Z","etag":null,"topics":["concurrency","go","golang","patterns"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lotusirous.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-30T00:42:14.000Z","updated_at":"2025-03-30T12:40:13.000Z","dependencies_parsed_at":"2024-11-01T13:32:48.176Z","dependency_job_id":"78396619-cb18-4307-a05e-3354da50a29c","html_url":"https://github.com/lotusirous/go-concurrency-patterns","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lotusirous/go-concurrency-patterns","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lotusirous%2Fgo-concurrency-patterns","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lotusirous%2Fgo-concurrency-patterns/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lotusirous%2Fgo-concurrency-patterns/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lotusirous%2Fgo-concurrency-patterns/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lotusirous","download_url":"https://codeload.github.com/lotusirous/go-concurrency-patterns/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lotusirous%2Fgo-concurrency-patterns/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28760642,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T20:56:06.009Z","status":"ssl_error","status_checked_at":"2026-01-25T20:54:48.203Z","response_time":113,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["concurrency","go","golang","patterns"],"created_at":"2024-08-01T03:01:00.891Z","updated_at":"2026-01-25T22:04:28.218Z","avatar_url":"https://github.com/lotusirous.png","language":"Go","funding_links":[],"categories":["文档","Go","Repositories","Documentation"],"sub_categories":["组织","To Organize"],"readme":"# Go Concurrency Patterns\n\nThis repository collects common concurrency patterns in Golang\n\n\n## Materials\n- [Concurrency is not parallelism](https://blog.golang.org/waza-talk)\n- [Go Concurrency Patterns](https://talks.golang.org/2012/concurrency.slide#1)\nand [source](https://talks.golang.org/2012/concurrency/support/)\n- [Advanced Go Concurrency Patterns](https://talks.golang.org/2013/advconc.slide)\n- [Rethinking classical concurrency pattern](https://www.youtube.com/watch?v=5zXAHh5tJqQ)\n- [Go Concurrency Patterns: Pipelines and cancellation](https://blog.golang.org/pipelines)\n- [Go Concurrency Patterns: Timing out, moving on](https://blog.golang.org/concurrency-timeouts)\n- [Complex Concurrency Patterns with Go](https://www.youtube.com/watch?v=2HOO5gIgyMg)\n\n## Context:\n- [Go Concurrency Patterns: Context](https://blog.golang.org/context)\n- [How to correctly use package context](https://www.youtube.com/watch?v=-_B5uQ4UGi0)\n- [justforfunc #9: The Context Package](https://www.youtube.com/watch?v=LSzR0VEraWw)\n- [Contexts and structs](https://blog.golang.org/context-and-structs)\n\n| Name                                                      | Description                                         | Playground                                    |\n|-----------------------------------------------------------|-----------------------------------------------------|-----------------------------------------------|\n| [1-boring](/1-boring/main.go)                             | A hello world to goroutine                          | [play](https://play.golang.org/p/ienqr4bKGQ6) | \n| [2-chan](/2-chan/main.go)                                 | A hello world to go channel                         | [play](https://play.golang.org/p/amazakVmwFy) |\n| [3-generator](/3-generator/main.go)                       | A python-liked generator                            | [play](https://play.golang.org/p/9ykTDe7qLSw) |\n| [4-fanin](/4-fanin/main.go)                               | Fan in pattern                                      | [play](https://play.golang.org/p/mw_29ibv0bh) |\n| [5-restore-sequence](/5-restore-sequence/main.go)         | Restore sequence                                    | [play](https://play.golang.org/p/aV43DEmNZBz) |\n| [6-select-timeout](/6-select-timeout/main.go)             | Add Timeout to a goroutine                          | [play](https://play.golang.org/p/WIqNvmxiYvn) |\n| [7-quit-signal](/7-quit-signal/main.go)                   | Quit signal                                         | [play](https://play.golang.org/p/rKYKqMeoFDq) |\n| [8-daisy-chan](/8-daisy-chan/main.go)                     | Daisy chan pattern                                  | [play](https://play.golang.org/p/1y-4ERc3Xv4) |\n| [9-google1.0](/9-google1.0/main.go)                       | Build a concurrent google search from the ground-up | [play](https://play.golang.org/p/xMhEBlcYkfz) |\n| [10-google2.0](/10-google2.0/main.go)                     | Build a concurrent google search from the ground-up | [play](https://play.golang.org/p/-J5C9McGG9t) |\n| [11-google2.1](/11-google2.1/main.go)                     | Build a concurrent google search from the ground-up | [play](https://play.golang.org/p/hNc_HStC2BT) |\n| [12-google3.0](/12-google3.0/main.go)                     | Build a concurrent google search from the ground-up | [play](https://play.golang.org/p/uE82kcSDkSJ) |\n| [13-adv-pingpong](/13-adv-pingpong/main.go)               | A sample ping-pong table implemented in goroutine   | [play](https://play.golang.org/p/hT6knhJjBXY) |\n| [14-adv-subscription](/14-adv-subscription/main.go)       | Subscription                                        | [play](https://play.golang.org/p/J5cjAV-qtaR) |\n| [15-bounded-parallelism](/15-bounded-parallelism/main.go) | Bounded parallelism                                 | [play](https://play.golang.org/p/j_aq1dcGkGr) |\n| [16-context](/16-context/main.go)                         | How to user context in HTTP client and server       | [play](https://play.golang.org/p/ZKZfKtpEJqH) |\n| [17-ring-buffer-channel](/17-ring-buffer-channel/main.go) | Ring buffer channel                                 | [play](https://play.golang.org/p/aeUeCTWhgJ2) |\n| [18-worker-pool](/18-worker-pool/main.go)                 | worker pool pattern                                 | [play](https://play.golang.org/p/CxKoTnzb9Mx) |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flotusirous%2Fgo-concurrency-patterns","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flotusirous%2Fgo-concurrency-patterns","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flotusirous%2Fgo-concurrency-patterns/lists"}