Faiss
Main Page
Namespaces
Classes
Files
File List
All
Classes
Namespaces
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
gpu
utils
WorkerThread.h
1
2
/**
3
* Copyright (c) 2015-present, Facebook, Inc.
4
* All rights reserved.
5
*
6
* This source code is licensed under the CC-by-NC license found in the
7
* LICENSE file in the root directory of this source tree.
8
*/
9
10
// Copyright 2004-present Facebook. All Rights Reserved.
11
12
#pragma once
13
14
#include <condition_variable>
15
#include <future>
16
#include <deque>
17
#include <thread>
18
19
namespace
faiss {
namespace
gpu {
20
21
class
WorkerThread
{
22
public
:
23
WorkerThread
();
24
25
/// Stops and waits for the worker thread to exit, flushing all
26
/// pending lambdas
27
~WorkerThread
();
28
29
/// Request that the worker thread stop itself
30
void
stop
();
31
32
/// Blocking waits in the current thread for the worker thread to
33
/// stop
34
void
waitForThreadExit
();
35
36
/// Adds a lambda to run on the worker thread; returns a future that
37
/// can be used to block on its completion.
38
/// Future status is `true` if the lambda was run in the worker
39
/// thread; `false` if it was not run, because the worker thread is
40
/// exiting or has exited.
41
std::future<bool>
add
(std::function<
void
()> f);
42
43
private
:
44
void
startThread();
45
void
threadMain();
46
void
threadLoop();
47
48
/// Thread that all queued lambdas are run on
49
std::thread thread_;
50
51
/// Mutex for the queue and exit status
52
std::mutex mutex_;
53
54
/// Monitor for the exit status and the queue
55
std::condition_variable monitor_;
56
57
/// Whether or not we want the thread to exit
58
bool
wantStop_;
59
60
/// Queue of pending lambdas to call
61
std::deque<std::pair<std::function<void()>, std::promise<bool>>> queue_;
62
};
63
64
} }
// namespace
faiss::gpu::WorkerThread::stop
void stop()
Request that the worker thread stop itself.
Definition:
WorkerThread.cpp:36
faiss::gpu::WorkerThread
Definition:
WorkerThread.h:21
faiss::gpu::WorkerThread::add
std::future< bool > add(std::function< void()> f)
Definition:
WorkerThread.cpp:44
faiss::gpu::WorkerThread::waitForThreadExit
void waitForThreadExit()
Definition:
WorkerThread.cpp:107
faiss::gpu::WorkerThread::~WorkerThread
~WorkerThread()
Definition:
WorkerThread.cpp:25
Generated by
1.8.5