{"id":17651500,"url":"https://github.com/mpoeter/emr","last_synced_at":"2025-05-07T07:13:42.597Z","repository":{"id":84430047,"uuid":"109192907","full_name":"mpoeter/emr","owner":"mpoeter","description":"Effective Memory Reclamation","archived":false,"fork":false,"pushed_at":"2020-02-06T11:11:39.000Z","size":60,"stargazers_count":55,"open_issues_count":0,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-05-07T07:13:23.201Z","etag":null,"topics":["cpp","cpp11","debra","epoch-based-reclamation","hazard-pointer","lock-free","reclamation-schemes","reference-counting","stamp-it"],"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/mpoeter.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-11-01T22:59:43.000Z","updated_at":"2025-04-17T08:53:08.000Z","dependencies_parsed_at":"2023-03-12T22:57:43.580Z","dependency_job_id":null,"html_url":"https://github.com/mpoeter/emr","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpoeter%2Femr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpoeter%2Femr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpoeter%2Femr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpoeter%2Femr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mpoeter","download_url":"https://codeload.github.com/mpoeter/emr/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252831270,"owners_count":21810784,"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","cpp11","debra","epoch-based-reclamation","hazard-pointer","lock-free","reclamation-schemes","reference-counting","stamp-it"],"created_at":"2024-10-23T11:42:26.494Z","updated_at":"2025-05-07T07:13:42.585Z","avatar_url":"https://github.com/mpoeter.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"### I have started a new project based on this work: https://github.com/mpoeter/xenium\n**All further development is done there!**\n\n---\n\n# Effective Memory Reclamation\nThis repository contains the C++ implementations of various\nlock-free reclamation schemes that I have implemented in\nthe course of my [Master's Thesis](http://www.ub.tuwien.ac.at/dipl/VL/51367.pdf).\n\nThe implemented schemes are:\n* Lock-Free Reference Counting \n* [Hazard Pointers](http://www.cs.otago.ac.nz/cosc440/readings/hazard-pointers.pdf)\n* Quiescent State Based Reclamation\n* [Epoch Based Reclamation](https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-579.pdf)\n* [New Epoch Based Reclamation](http://csng.cs.toronto.edu/publication_files/0000/0159/jpdc07.pdf)\n* [DEBRA](http://www.cs.utoronto.ca/~tabrown/debra/paper.podc15.pdf)\n* Stamp-it\n\nThe last one (Stamp-it) is a new reclamation scheme that\nI have developed as part my thesis. All schemes and their\nimplementations are described in detail in the thesis.\n\nThe implementations are based on an adapted version\nof the interfaces proposed by Robison in [Policy-Based Design\nfor Safe Destruction in Concurrent Containers](http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3712.pdf).\nA detailed list of how my version differs from the original proposal\ncan be found in the Thesis.\n\nThis repository also contains implementations of Michael and Scott's\nlock-free queue, as well as Michael and Harris' list based set\nand hash-map. These data structures are implemented using said\ninterface and can therefore be used with the different reclamation\nschemes.\n\nThe benchmark folder contains a set of benchmarks that were\nused to analyze the performance impact of the various reclamation\nschemes in different scenarios and on different architectures;\nthe results can be found in https://github.com/mpoeter/emr-benchmarks\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmpoeter%2Femr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmpoeter%2Femr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmpoeter%2Femr/lists"}