本帖最后由 sinanjj 于 2009-11-27 10:39 编辑
Linux内核中,ip+port --> socket 的Hash函数是使用Jenkins函数。
http://burtleburtle.net/bob/hash/doobs.html
函数核心:
uint32_t jenkins_one_at_a_time_hash(unsigned char *key, size_t key_len)
{
uint32_t hash = 0;
size_t i;
for (i = 0; i < key_len; i++) {
hash += key;
hash += (hash << 10);
hash ^= (hash >> 6);
}
hash += (hash << 3);
hash ^= (hash >> 11);
hash += (hash << 15);
return hash;
}
可参见:
http://en.wikipedia.org/wiki/Jenkins_hash_function
源码见附件
lookup3.zip
(34.52 KB)
请将后缀名zip改为C |