TL2内存申请的管理
内存申请函数为TxAlloc,每个TM由一个tmalloc_t* allocPtr来记录申请的内存。tmalloc_t的定义如下:
typedef struct tmalloc {
long size;
long capacity;
void** elements;
} tmalloc_t;
每次申请内存后,size=size+1,并以size做索引将新申请的内存记录在elements中,即elements[size]=内存地址。如果TM commit失败,那么就借助elements释放申请的所有内存,如果执行成功,那么将size置0,elements的内容不变。
TL2内存释放的管理
内存释放函数为TxFree,每个TM由一个tmalloc_t* freePtr来记录释放的内存,记录的方式和申请内存的方式相同。如果TM abort,那么freePtr->size=0,因为内存本来就没有真正释放;如果TM成功,那么借助elements真正释放要free的内存。
本文介绍了TL2内存管理系统中内存申请与释放的具体实现方式。内存申请通过TxAlloc函数完成,利用tmalloc_t结构体记录每次申请的状态。若事务提交失败,则回滚释放所有已分配内存。内存释放使用TxFree函数,同样采用tmalloc_t记录释放情况,确保事务成功时能正确释放内存。
2552

被折叠的 条评论
为什么被折叠?



