{"id":21623409,"url":"https://github.com/kardbord/concurrency","last_synced_at":"2025-06-12T04:08:25.006Z","repository":{"id":38319544,"uuid":"506529591","full_name":"Kardbord/Concurrency","owner":"Kardbord","description":"Sharded, thread-safe implementations of STL containers.","archived":false,"fork":false,"pushed_at":"2022-07-19T06:05:56.000Z","size":139,"stargazers_count":1,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-24T22:12:22.312Z","etag":null,"topics":["concurrency","cpp","cpp17","thread-safe","thread-safety"],"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/Kardbord.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":"2022-06-23T06:53:50.000Z","updated_at":"2022-07-08T15:50:25.000Z","dependencies_parsed_at":"2022-07-11T02:00:27.618Z","dependency_job_id":null,"html_url":"https://github.com/Kardbord/Concurrency","commit_stats":null,"previous_names":["kardbord/concurrency"],"tags_count":1,"template":false,"template_full_name":"Kardbord/cpp-project-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kardbord%2FConcurrency","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kardbord%2FConcurrency/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kardbord%2FConcurrency/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kardbord%2FConcurrency/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kardbord","download_url":"https://codeload.github.com/Kardbord/Concurrency/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244288045,"owners_count":20428918,"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":["concurrency","cpp","cpp17","thread-safe","thread-safety"],"created_at":"2024-11-25T00:12:53.375Z","updated_at":"2025-03-18T19:29:08.477Z","avatar_url":"https://github.com/Kardbord.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Concurrency\n\n[![Build and Test](https://github.com/TannerKvarfordt/Concurrency/actions/workflows/cmake.yml/badge.svg)](https://github.com/TannerKvarfordt/Concurrency/actions/workflows/cmake.yml)\n\nThis project provides thread-safe wrappers around C++ standard library containers. Most standard library functionality is preserved, though\nsome exceptions have to be made to remove footguns in the context of concurrent access. Notably, iterator access is not supported for most\nwrappers.\n\n## Installation\n\n**NOTE** - This library requires C++17.\n\nThis is a header-only library. There are several ways to make use of the provided headers.\n\n- [`./tools/install.sh`](./tools/install.sh). Invoke this script, optionally providing an installation directory with the `-p` option.\n- Alternatively, simply copy the contents of `include/` to your system.\n\nEither way, you'll have to make sure that the location of the headers is known your build environment. At that point, you\ncan include the headers as you would any others.\n\n## Container Wrappers\n\n### [`std::unordered_map`](https://en.cppreference.com/w/cpp/container/unordered_map)\n\n[`::concurrency::UnorderedMap`](include/concurrency/UnorderedMap.hpp) is a simple wrapper around `std::unordered_map` which\nallows thread-safe access via an internal [`std::shared_mutex`](https://en.cppreference.com/w/cpp/thread/shared_mutex).\n\n[`::concurrency::ShardedUnorderedMap`](include/concurrency/ShardedUnorderedMap.hpp) provides the same interfaces as `::concurrency::UnorderedMap`, but employs sharding in an effort to improve\nwrite-access performance. By splitting the underlying data into multiple `::concurrency::UnorderedMap`s, multiple\nthreads may obtain write access at once, provided the respective keys they are accessing are stored in different\nshards. See the [map_benchmark example](examples/map_benchmark/) for performance metrics.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkardbord%2Fconcurrency","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkardbord%2Fconcurrency","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkardbord%2Fconcurrency/lists"}