参考链接:
http://pmem.io/2016/01/12/cpp-01.html
Part 0
有关之前 C 语言的 libpmemobj 库的目标是在不修改编译器的条件下实现持续性存储的所有功能,但是只能在低级软件和语言。
而 libpmemobj C++ 库是更高级的语言,减少错误并且具有更好的API。更多专注修改 structs 和 classes,而对函数共能只做简单修改。
Part 1
C 语言的 API 中存在的错误就是在事务操作中必须跟踪持久性内存变量的修改。
以vector example 为例子
pmem::obj::p 这个类不增加存储开销,但能够形成与C语言版本相同的 vector 结构体。在事务的操作中不需要再使用pmemobj_tx_add_range 函数。原因是:如果代码变得很复杂的时候在使用pmemobj_tx_add_range 函数时就会造成很多错误从而导致持久性问题。
Part 2
pmem::obj::persistent_ptr