diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-12-05 16:30:20 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2020-12-05 16:30:20 +0000 |
commit | 37e31c53ee371db126c31a3e3fca8c1904a3fba7 (patch) | |
tree | a371e626900d8475fcc3f96ebf496fca6b3cd68d /fnet | |
parent | 807ff44ac51dae209de0cfe4c5a062f2e142b48b (diff) |
Only handle wakeup if necessary.
Diffstat (limited to 'fnet')
-rw-r--r-- | fnet/src/vespa/fnet/transport_thread.cpp | 9 | ||||
-rw-r--r-- | fnet/src/vespa/fnet/transport_thread.h | 4 |
2 files changed, 6 insertions, 7 deletions
diff --git a/fnet/src/vespa/fnet/transport_thread.cpp b/fnet/src/vespa/fnet/transport_thread.cpp index 8c3783c74a4..5e1a9759a60 100644 --- a/fnet/src/vespa/fnet/transport_thread.cpp +++ b/fnet/src/vespa/fnet/transport_thread.cpp @@ -393,7 +393,7 @@ FNET_TransportThread::InitEventLoop() } void -FNET_TransportThread::handle_wakeup_events() +FNET_TransportThread::handle_wakeup() { { std::lock_guard<std::mutex> guard(_lock); @@ -473,10 +473,11 @@ FNET_TransportThread::EventLoopIteration() { _now = steady_clock::now(); // handle io-events - _selector.dispatch(*this); + auto dispatchResult = _selector.dispatch(*this); - // Must be called after selector.dispatch - handle_wakeup_events(); + if ((dispatchResult == vespalib::SelectorDispatchResult::NO_WAKEUP) && (getConfig()._events_before_wakeup > 1)) { + handle_wakeup(); + } // handle IOC time-outs if (getConfig()._iocTimeOut > vespalib::duration::zero()) { diff --git a/fnet/src/vespa/fnet/transport_thread.h b/fnet/src/vespa/fnet/transport_thread.h index 36490c88656..517c0239887 100644 --- a/fnet/src/vespa/fnet/transport_thread.h +++ b/fnet/src/vespa/fnet/transport_thread.h @@ -172,8 +172,6 @@ private: return _shutdown.load(std::memory_order_relaxed); } - void handle_wakeup_events(); - public: FNET_TransportThread(const FNET_TransportThread &) = delete; FNET_TransportThread &operator=(const FNET_TransportThread &) = delete; @@ -405,7 +403,7 @@ public: // Empty selector call-back for selector wakeup - void handle_wakeup() { } + void handle_wakeup(); // selector call-back for io-events void handle_event(FNET_IOComponent &ctx, bool read, bool write); |