class ThreadedIndex : public IndexT
A holder of indices in a collection of threads The interface to this class itself is not thread safe
Subclassed by faiss::IndexReplicasTemplate< IndexT >, faiss::IndexShardsTemplate< IndexT >
explicit ThreadedIndex(bool threaded)
explicit ThreadedIndex(int d, bool threaded)
virtual void addIndex(IndexT *index)
override an index that is managed by ourselves. WARNING: once an index is added, it becomes unsafe to touch it from any other thread than that on which is managing it, until we are shut down. Use runOnIndex to perform work on it instead.
void removeIndex(IndexT *index)
Remove an index that is managed by ourselves. This will flush all pending work on that index, and then shut down its managing thread, and will remove the index.
void runOnIndex(std::function<void(int, IndexT*)> f)
Run a function on all indices, in the thread that the index is managed in. Function arguments are (index in collection, index pointer)
void reset() override
faiss::Index API All indices receive the same call
inline int count() const
Returns the number of sub-indices.
bool own_indices = false
Whether or not we are responsible for deleting our contained indices.
std::vector<std::pair<IndexT*, std::unique_ptr<WorkerThread>>> indices_
Collection of Index instances, with their managing worker thread if any.
Is this index multi-threaded?
- explicit ThreadedIndex(bool threaded)