https://github.com/terraindata/frc
A fast reference counting library for C++
https://github.com/terraindata/frc
cpp memory memory-management parallel-computing reference-counting
Last synced: 5 months ago
JSON representation
A fast reference counting library for C++
- Host: GitHub
- URL: https://github.com/terraindata/frc
- Owner: terraindata
- License: mit
- Created: 2017-12-19T22:59:27.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2020-08-16T09:32:58.000Z (over 5 years ago)
- Last Synced: 2025-04-28T16:57:10.400Z (10 months ago)
- Topics: cpp, memory, memory-management, parallel-computing, reference-counting
- Language: C++
- Size: 148 KB
- Stars: 24
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: COPYING.md
Awesome Lists containing this project
README
Fast Reference Counter (FRC)
(C) 2017, 2018 Terrain Data, Inc.
## Introduction
FRC is a high-performance reference counting library for C++. It provides
smart pointer types with performance that greatly exceeds that of
`std::shared_ptr` and `boost::atomic_shared_ptr`, for example; in
particular, FRC's reference-counted pointer types excel in concurrent
scenarios (such as concurrent data structures). A research paper describing
FRC in detail is linked at the bottom of this file.
## Organization
The repository consists of three main components:
* The FRC library
* Unit tests for the FRC library and supporting components
* Benchmarks for the FRC library
Source code for the tests is located under the `test` folder, and source code
for the benchmarks is located under the `benchmark` folder. Source code for
the FRC library is located under the `src` directory.
All build files (including binary output, CMake build scripts, Makefiles, etc.)
are located under the `build` directory. Each of the components of the
repository has its own subdirectory and associated `CMakeLists.txt` under the
build directory.
The root-level `cmake` directory contains CMake helper routines, including the
common compiler flags used for compiling the projects.
The root-level `lib` directory contains scripts (and, when the FRC library is
built, the corresponding headers/libraries) for downloading and building
dependent libraries, such as Boost and Google Test (the latter being used for
managing tests and benchmarks).
## Dependencies
FRC automatically downloads and builds certain dependencies like Boost.
However, certain other dependencies may need to be installed. For example,
in order to run `apply_style.sh`, you should first install the following
dependencies (written here as a one-line command for Debian-like operating
systems):
```bash
sudo apt-get install astyle
```
## Contributing
We welcome contributions to the FRC project. Any new commits should be sure to
adhere to our code style; please run `./apply_style.sh` each time you are about
to make a commit in order to automatically enforce our code style.
## License
Please see the included [COPYING.md](COPYING.md).
## Using in a Research Project
For details on FRC, download our research paper for free
[here](https://dl.acm.org/doi/10.1145/3299706.3210569?cid=99659276755).
If you use FRC in a research project, please cite our paper (citation below),
and please let us know about your paper!
> Charles Tripp, David Hyde, and Benjamin Grossman-Ponemon. 2018.
> FRC: A High-Performance Concurrent Parallel Deferred Reference Counter for C++.
> In Proceedings of the 2018 ACM SIGPLAN International Symposium on Memory Management
> (ISMM '18). ACM, New York, NY, USA, 14-28.
> https://doi.org/10.1145/3210563.3210569