aboutsummaryrefslogtreecommitdiffstats
path: root/fnet
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-12-05 16:30:20 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-12-05 16:30:20 +0000
commit37e31c53ee371db126c31a3e3fca8c1904a3fba7 (patch)
treea371e626900d8475fcc3f96ebf496fca6b3cd68d /fnet
parent807ff44ac51dae209de0cfe4c5a062f2e142b48b (diff)
Only handle wakeup if necessary.
Diffstat (limited to 'fnet')
-rw-r--r--fnet/src/vespa/fnet/transport_thread.cpp9
-rw-r--r--fnet/src/vespa/fnet/transport_thread.h4
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);