An introduction to pmemobj (part 3) - types

参考链接:https://pmem.io/2015/06/16/types.html

API函数

POBJ_ROOT() //代替 pmemobj_root() 函数

D_RW() //写入(根节点)

D_RO() //读取(根节点)

TX_MEMCPY() //代替memcpy 对事务进行操作

为了提供类型安全性,在持续性内存编程前需要明确的 layout 声明,以字符串存储为例的 layout 声明:

POBJ_LAYOUT_BEGIN(string_store);
POBJ_LAYOUT_ROOT(string_store, struct my_root);
POBJ_LAYOUT_END(string_store);

#define	MAX_BUF_LEN 10
struct my_root {
	char buf[MAX_BUF_LEN];
};

其中的 string_store 只是一个命名,如果要创建或者打开特定的内存池:

pmemobj_create(path, POBJ_LAYOUT_NAME(string_store), PMEMOBJ_MIN_POOL, 0666);
...
pmemobj_open(path, POBJ_LAYOUT_NAME(string_store));

之前使用 PMEMoids 作为持续性内存指针,但是这相当于直接通过一个地址去访问数据,可能会出现不同类型的指针之间相互赋值这种情况,但是编译器不会认为是错的,那么这样我们引入 TOID 类型来代替之前的持续性指针 PMEMoids。

 

TOID 转换为 PMEM :

TOID(struct foo) data;
pmemobj_direct(data.oid);

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值