{"id":22856114,"url":"https://github.com/andygeiss/channels","last_synced_at":"2025-03-31T07:45:06.796Z","repository":{"id":170412929,"uuid":"646549241","full_name":"andygeiss/channels","owner":"andygeiss","description":"Parallel Computing in Go - Build effective pipelines by using channels","archived":false,"fork":false,"pushed_at":"2023-05-28T18:54:36.000Z","size":3,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-12T22:08:46.133Z","etag":null,"topics":["channels","concurrency","concurrency-patterns","go","golang","parallel-computing","parallelism","patterns"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andygeiss.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-05-28T18:46:26.000Z","updated_at":"2024-02-04T00:18:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"cc714587-57fe-4fd3-8fbc-11a72014f699","html_url":"https://github.com/andygeiss/channels","commit_stats":{"total_commits":2,"total_committers":1,"mean_commits":2.0,"dds":0.0,"last_synced_commit":"52e58d5743e463b6e45e74420632b43d3ed4c280"},"previous_names":["andygeiss/channels"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andygeiss%2Fchannels","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andygeiss%2Fchannels/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andygeiss%2Fchannels/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andygeiss%2Fchannels/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andygeiss","download_url":"https://codeload.github.com/andygeiss/channels/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237468965,"owners_count":19315037,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["channels","concurrency","concurrency-patterns","go","golang","parallel-computing","parallelism","patterns"],"created_at":"2024-12-13T08:07:09.587Z","updated_at":"2025-02-06T12:20:53.566Z","avatar_url":"https://github.com/andygeiss.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# channels\n\nThis package provides reusable functions for creating, splitting, merging and multiplexing channels of any type to build effective pipelines.\nThe functions automatically use the available CPU cores and create and close the channels.\n\n                          3)                               6)\n                         ┌───────┐                        ┌───────┐\n                   ┌─────►Process├─────┐          ┌───────►Process├─────┐\n                   │     └───────┘     │          │       └───────┘     │\n     1)          2)│                 4)│      5)  │                   7)│      8)\n    ┌────────┐  ┌──┴──┐  ┌───────┐  ┌──▼──┐  ┌────┴────┐  ┌───────┐  ┌──▼──┐  ┌─────┐\n    │Generate├──►Split├──►Process├──►Merge├──►Multiplex├──►Process├──►Merge├──►Drain│\n    └────────┘  └──┬──┘  └───────┘  └──▲──┘  └────┬────┘  └───────┘  └──▲──┘  └─────┘\n                   │                   │          │                     │\n                   │     ┌───────┐     │          │       ┌───────┐     │\n                   └─────►Process├─────┘          └───────►Process├─────┘\n                         └───────┘                        └───────┘\n\n- [x] Drain receives each value from an input channel and does something with it.\n- [x] Generate sends each value to the out channel.\n- [x] Merge sends each value from a list of input channels to the out channel.\n- [x] Multiplex sends each value from an input channel to every output channel.\n- [x] Process works on each value from an input channel and sends the result to an output channel.\n- [x] Split sends each value from an input channel to one of the output channels.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandygeiss%2Fchannels","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandygeiss%2Fchannels","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandygeiss%2Fchannels/lists"}