pmemobj中具有事务的操作,事务的意思是被指定的一系列的操作要么执行成功,要么就失败,其中某一步错误也是失败。所以可以通过状态转换来完成失败函数的资源回收。
采用如下5个状态表示TX_BEGIN(pop)、TX_ONCOMMIT、TX_ONABORT 、TX_FINALLY、TX_END,并这5个状态之间的转换关系如下,可通过pmemobj_tx_abort()等函数强行跳转。

#include <stdlib.h>
#include <stdio.h>
#include <libpmemobj.h>
int main(int argc, const char *argv[])
{
const char path[] = "/home/hostname/pmemobj_setjmp.003";
PMEMobjpool *pop = pmemobj_create(path, setjmp_example, PMEMOBJ_MIN_POOL,