Lockpp
🔒 A C++23 Library that provides mutex protected objects
Install / Use
/learn @Curve/LockppREADME
<div align="center">
<img src="assets/logo.svg" height=312>
</div>
<br/>
<p align="center">
A C++23 library providing mutex protection for any object
</p>
📦 Installation
-
Using CPM
CPMFindPackage( NAME lockpp VERSION 3.2.0 GIT_REPOSITORY "https://github.com/Curve/lockpp" ) -
Using FetchContent
include(FetchContent) FetchContent_Declare(lockpp GIT_REPOSITORY "https://github.com/Curve/lockpp" GIT_TAG v3.2.0) FetchContent_MakeAvailable(lockpp) target_link_libraries(<target> cr::lockpp)
📃 Usage
lockpp::lock<std::string> var("Test");
// Read only access
{
auto locked = var.read();
assert(!locked->empty());
}
// Write access
{
auto locked = var.write();
*write_access = "assignment";
locked->clear();
}
// One time access
var.assign("another assignment");
assert(var.copy() == "another assignment");
lockpp also allows you to supply the mutex to be used as well as custom locks (i.e std::unique_lock, std::lock_guard).
For more examples see tests
