Я не знаю, почему есть некоторые потерянные. Как я могу обновить код, чтобы несколько операций извлечения и вставки могли выполняться параллельно? Спасибо. Когда я запускаю свой файл. c, он показывает:
$ ./parallel_hashtable 8
[main] Inserted 100000 keys in 0.002476 seconds
[thread 7] 4304 keys lost!
.....
[main] Retrieved 65634/100000 keys in 0.792488 seconds
Мой код:
bucket_entry * retrieve(int key) {
bucket_entry *b;
for (b = table[key % NUM_BUCKETS]; b != NULL; b = b->next) {
if (b->key == key) return b;
}
return NULL;
}
void insert(int key, int val) {
int i = key % NUM_BUCKETS;
bucket_entry *e = (bucket_entry *) malloc(sizeof(bucket_entry));
if (!e) panic("No memory to allocate bucket!");
e->next = table[i];
e->key = key;
e->val = val;
table[i] = e;
}