{"id":13730197,"url":"https://github.com/ssbl/concurrent-deque","last_synced_at":"2026-01-26T22:05:05.455Z","repository":{"id":43171794,"uuid":"112129983","full_name":"ssbl/concurrent-deque","owner":"ssbl","description":"Lock-free concurrent work stealing deque in C++","archived":false,"fork":false,"pushed_at":"2018-02-19T22:45:14.000Z","size":86,"stargazers_count":40,"open_issues_count":1,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-08T02:38:29.289Z","etag":null,"topics":["chase-lev","concurrent-data-structure","lock-free-queue","work-stealing"],"latest_commit_sha":null,"homepage":"","language":"C++","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/ssbl.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}},"created_at":"2017-11-27T00:57:57.000Z","updated_at":"2025-04-20T00:40:01.000Z","dependencies_parsed_at":"2022-08-30T11:11:45.514Z","dependency_job_id":null,"html_url":"https://github.com/ssbl/concurrent-deque","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ssbl/concurrent-deque","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssbl%2Fconcurrent-deque","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssbl%2Fconcurrent-deque/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssbl%2Fconcurrent-deque/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssbl%2Fconcurrent-deque/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ssbl","download_url":"https://codeload.github.com/ssbl/concurrent-deque/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ssbl%2Fconcurrent-deque/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28789722,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T21:49:50.245Z","status":"ssl_error","status_checked_at":"2026-01-26T21:48:29.455Z","response_time":59,"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":["chase-lev","concurrent-data-structure","lock-free-queue","work-stealing"],"created_at":"2024-08-03T02:01:11.288Z","updated_at":"2026-01-26T22:05:05.431Z","avatar_url":"https://github.com/ssbl.png","language":"C++","readme":"A lock-free work-stealing deque\n---\n\nThis is a C++ implementation of the Chase-Lev deque, a concurrent\nsingle-producer, multi-consumer queue presented in the paper \"Dynamic\nCircular Work-Stealing Deque\". Additionally, this deque handles\nreclamation of unused storage at the cost of some coordination between\nthe stealers and the worker.\n\nThis implementation is heavily based on the improved version presented\nin the paper \"Correct and Efficient Work-Stealing for Weak Memory\nModels\". The Rust `crossbeam` crate also provided a ton of\ninspiration.\n\n### Usage\n\nWith `deque.hpp` in your include path:\n\n```c++\n#include \"deque.hpp\"\n\nauto ws = deque::deque\u003cint\u003e();\nauto worker = std::move(ws.first);\nauto stealer = std::move(ws.second);\n\n// The worker can push and pop from one end of the queue.\nworker.push(1);\nworker.pop();\n\n// Stealers can pop from the other end of the queue.\nworker.push(1);\nstd::thread stealer_thread([\u0026stealer]() {\n  // Each stealer thread creates a copy.\n  auto stealer_copy = stealer;\n  stealer_copy.steal();\n});\n\nstealer.steal();\nstealer_thread.join();\n```\n","funding_links":[],"categories":["C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssbl%2Fconcurrent-deque","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fssbl%2Fconcurrent-deque","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fssbl%2Fconcurrent-deque/lists"}