CMS 3D CMS Logo

SonicDispatcherPseudoAsync.h
Go to the documentation of this file.
1 #ifndef HeterogeneousCore_SonicCore_SonicDispatcherPseudoAsync
2 #define HeterogeneousCore_SonicCore_SonicDispatcherPseudoAsync
3 
5 
6 #include <memory>
7 #include <condition_variable>
8 #include <mutex>
9 #include <thread>
10 #include <atomic>
11 #include <exception>
12 
13 class SonicClientBase;
14 
15 //pretend to be async + non-blocking by waiting for blocking calls to return in separate std::thread
17 public:
18  //constructor
20 
21  //destructor
22  ~SonicDispatcherPseudoAsync() override;
23 
24  //main operation
25  void dispatch(edm::WaitingTaskWithArenaHolder holder) override;
26 
27 private:
28  void waitForNext();
29 
30  //members
31  bool hasCall_;
33  std::condition_variable cond_;
34  std::atomic<bool> stop_;
35  std::unique_ptr<std::thread> thread_;
36 };
37 
38 #endif
SonicDispatcherPseudoAsync::mutex_
std::mutex mutex_
Definition: SonicDispatcherPseudoAsync.h:32
SonicDispatcherPseudoAsync::SonicDispatcherPseudoAsync
SonicDispatcherPseudoAsync(SonicClientBase *client)
Definition: SonicDispatcherPseudoAsync.cc:5
SonicClientBase
Definition: SonicClientBase.h:19
SonicDispatcher::dispatch
virtual void dispatch()
Definition: SonicDispatcher.cc:9
edm::WaitingTaskWithArenaHolder
Definition: WaitingTaskWithArenaHolder.h:31
SonicDispatcherPseudoAsync
Definition: SonicDispatcherPseudoAsync.h:16
SonicDispatcherPseudoAsync::thread_
std::unique_ptr< std::thread > thread_
Definition: SonicDispatcherPseudoAsync.h:35
HLTObjectMonitor_Client_cff.client
client
Definition: HLTObjectMonitor_Client_cff.py:6
SonicDispatcher
Definition: SonicDispatcher.h:8
SonicDispatcherPseudoAsync::stop_
std::atomic< bool > stop_
Definition: SonicDispatcherPseudoAsync.h:34
SonicDispatcherPseudoAsync::~SonicDispatcherPseudoAsync
~SonicDispatcherPseudoAsync() override
Definition: SonicDispatcherPseudoAsync.cc:10
SonicDispatcher.h
mutex
static std::mutex mutex
Definition: Proxy.cc:8
SonicDispatcherPseudoAsync::waitForNext
void waitForNext()
Definition: SonicDispatcherPseudoAsync.cc:35
SonicDispatcherPseudoAsync::hasCall_
bool hasCall_
Definition: SonicDispatcherPseudoAsync.h:31
SonicDispatcherPseudoAsync::cond_
std::condition_variable cond_
Definition: SonicDispatcherPseudoAsync.h:33