Krotos Modules 3
Loading...
Searching...
No Matches
visited_list_pool.h
Go to the documentation of this file.
1#pragma once
2
3#include <mutex>
4#include <string.h>
5#include <deque>
6
7namespace hnswlib {
8 typedef unsigned short int vl_type;
9
11 public:
14 unsigned int numelements;
15
16 VisitedList(int numelements1) {
17 curV = static_cast<vl_type>(-1);
18 numelements = numelements1;
20 }
21
22 void reset() {
23 curV++;
24 if (curV == 0) {
25 memset(mass, 0, sizeof(vl_type) * numelements);
26 curV++;
27 }
28 };
29
30 ~VisitedList() { delete[] mass; }
31 };
33//
34// Class for multi-threaded pool-management of VisitedLists
35//
37
39 std::deque<VisitedList *> pool;
40 std::mutex poolguard;
42
43 public:
44 VisitedListPool(int initmaxpools, int numelements1) {
45 numelements = numelements1;
46 for (int i = 0; i < initmaxpools; i++)
47 pool.push_front(new VisitedList(numelements));
48 }
49
51 VisitedList *rez;
52 {
53 std::unique_lock <std::mutex> lock(poolguard);
54 if (pool.size() > 0) {
55 rez = pool.front();
56 pool.pop_front();
57 } else {
58 rez = new VisitedList(numelements);
59 }
60 }
61 rez->reset();
62 return rez;
63 };
64
66 std::unique_lock <std::mutex> lock(poolguard);
67 pool.push_front(vl);
68 };
69
71 while (pool.size()) {
72 VisitedList *rez = pool.front();
73 pool.pop_front();
74 delete rez;
75 }
76 };
77 };
78}
79
Definition visited_list_pool.h:10
unsigned int numelements
Definition visited_list_pool.h:14
vl_type * mass
Definition visited_list_pool.h:13
~VisitedList()
Definition visited_list_pool.h:30
vl_type curV
Definition visited_list_pool.h:12
void reset()
Definition visited_list_pool.h:22
VisitedList(int numelements1)
Definition visited_list_pool.h:16
Definition visited_list_pool.h:38
int numelements
Definition visited_list_pool.h:41
void releaseVisitedList(VisitedList *vl)
Definition visited_list_pool.h:65
~VisitedListPool()
Definition visited_list_pool.h:70
std::mutex poolguard
Definition visited_list_pool.h:40
VisitedListPool(int initmaxpools, int numelements1)
Definition visited_list_pool.h:44
std::deque< VisitedList * > pool
Definition visited_list_pool.h:39
VisitedList * getFreeVisitedList()
Definition visited_list_pool.h:50
Definition bruteforce.h:7
unsigned short int vl_type
Definition visited_list_pool.h:8