Libpmemobj-cpp - lessons learned

Libpmemobj-cpp - lessons learned

Introduction We’ve been working on C++ bindings for libpmemobj since around 2016 - see our very first tutorial for libpmemobj-cpp. We’ve come a long way since then. A lot has changed - we’ve gained more experience and knowledge, added new features, fixed quite a few bugs, and …

Read More
Concurrency considerations in libpmemobj-cpp

Concurrency considerations in libpmemobj-cpp

Introduction Ensuring data consistency on pmem is a challenging task. It gets even more complicated if data is modified concurrently. This blog post describes several challenges related to data visibility, using transactions in multi-threaded environments, and memory leaks. Lock-free programming on …

Read More
C++ persistent containers - vector

C++ persistent containers - vector

[Note: pmem::obj::vector<> is no longer experimental. The rest of the information in this blog post is still accurate.] Introduction The main idea behind pmem containers is to fully exploit persistent memory potential by designing optimized on-media layouts and algorithms for persistent memory …

Read More
C++ persistent containers

C++ persistent containers

PMEM containers Our goal for the libpmemobj C++ bindings is to create a friendly and less error prone API for persistent memory programming. Even with persistent memory pool allocators, convenient interface for creating and managing transactions, auto-snapshotting class templates and smart …

Read More
C++ persistent containers - array

C++ persistent containers - array

Introduction Until now, our C++ bindings were missing one important component - persistent containers. In 1.5 release we have introduced the first one - pmem::obj::array. This container is currently placed in experimental namespace and folder (this means that both API and layout can change). It has …

Read More