Rsync源码——HashTable相关

本文详细探讨了Rsync源码中关于HashTable的部分,解析其内部实现原理和关键函数,帮助读者深入理解Rsync如何高效地管理和查找数据。
摘要由CSDN通过智能技术生成



预定义代码:

struct hashtable {
	void *nodes;
	int32 size, entries;
	uint32 node_size;
	int key64;
};

struct ht_int32_node {
	void *data;
	int32 key;
};

struct ht_int64_node {
	void *data;
	int64 key;
};

#define HT_NODE(tbl, bkts, i) ((void*)((char*)(bkts) + (i)*(tbl)->node_size))
#define HT_KEY(node, k64) ((k64)? ((struct ht_int64_node*)(node))->key \
			 : (int64)((struct ht_int32_node*)(node))->key)



hashtable.c:

/*
 * Routines to provide a memory-efficient hashtable.
 *
 * Copyright (C) 2007-2009 Wayne Davison
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.
 *
 * This progr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值