{"id":19020692,"url":"https://github.com/bhhbazinga/lockfreehashtable","last_synced_at":"2026-02-23T12:03:09.124Z","repository":{"id":158612897,"uuid":"239757759","full_name":"bhhbazinga/LockFreeHashTable","owner":"bhhbazinga","description":"Lock Free Resizable Hash Table Based On Split-Ordered Lists.","archived":false,"fork":false,"pushed_at":"2020-03-11T16:44:27.000Z","size":66,"stargazers_count":67,"open_issues_count":1,"forks_count":9,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-23T06:36:23.649Z","etag":null,"topics":["cpp","hashtable","lock-free","thread"],"latest_commit_sha":null,"homepage":"","language":"C++","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/bhhbazinga.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-02-11T12:35:10.000Z","updated_at":"2025-03-08T09:25:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"4780f139-151f-426b-8a25-95da4e9c5783","html_url":"https://github.com/bhhbazinga/LockFreeHashTable","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bhhbazinga/LockFreeHashTable","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhhbazinga%2FLockFreeHashTable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhhbazinga%2FLockFreeHashTable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhhbazinga%2FLockFreeHashTable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhhbazinga%2FLockFreeHashTable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bhhbazinga","download_url":"https://codeload.github.com/bhhbazinga/LockFreeHashTable/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bhhbazinga%2FLockFreeHashTable/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262724902,"owners_count":23354362,"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":["cpp","hashtable","lock-free","thread"],"created_at":"2024-11-08T20:18:06.555Z","updated_at":"2026-02-23T12:03:04.068Z","avatar_url":"https://github.com/bhhbazinga.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LockFreeHashTable\nLock Free Resizable Hash Table Based On Split-Ordered Lists.\n## Feature\n  * Thread-safe and Lock-free.\n  * ABA safe.\n  * Support Multi-producer \u0026 Multi-consumer.\n  * Use Hazard Pointer to manage memory.\n  * Lock Free LinkedList base on Harris' ListBasedSet, see also [LockFreeLinkedList](https://github.com/bhhbazinga/LockFreeLinkedList)\n  * Resize without waiting.\n## Benchmark\n  Magnitude     | Insert      | Find       | Delete     | Insert\u0026Find\u0026Delete|\n  :-----------  | :-----------| :----------|:-----------| :-----------------\n  10K           | 7.8ms       | 1.6ms      | 2.1ms      | 10.4ms\n  100K          | 74.9ms      | 13.4ms     | 18.4ms     | 111.2ms\n  1000K         | 961ms       | 117.8ms    | 216.1ms    | 1264.1ms\n  \nThe above data was tested on my 2013 macbook-pro with Intel Core i7 4 cores 2.3 GHz.\n\nThe data of first three column was obtained by starting 8 threads to insert concurrently, find concurrently, delete concurrently, the data of four column was obtained by starting 2 threads to insert, 2 threads to find, 2 threads to delete concurrently, each looped 10 times to calculate the average time consumption.\nSee also [test](test.cc).\n## Build\n```\nmake \u0026\u0026 ./test\n```\n## API\n```C++\nbool Insert(const K\u0026 key, const V\u0026 value);\nbool Insert(const K\u0026 key, V\u0026\u0026 value);\nbool Insert(K\u0026\u0026 key, const V\u0026 value);\nbool Insert(K\u0026\u0026 key, V\u0026\u0026 value);\nbool Find(const K\u0026 key, V\u0026 value);\nbool Delete(const T\u0026 data);\nsize_t size() const;\n```\n## TODO List\n- [ ] Shrink Hash Table without waiting.\n## Reference\n[1]A Pragmatic Implementation of Non-BlockingLinked-Lists. Timothy L.Harris\\\n[2]Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects. Maged M. Michael\\\n[3]Split-Ordered Lists: Lock-Free Extensible Hash Tables. Tel-Aviv University and Sun Microsystems Laboratories, Tel-Aviv, Israel\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhhbazinga%2Flockfreehashtable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbhhbazinga%2Flockfreehashtable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbhhbazinga%2Flockfreehashtable/lists"}