diff options
author | Håvard Pettersen <havardpe@yahooinc.com> | 2023-01-04 12:42:42 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@yahooinc.com> | 2023-01-04 12:42:42 +0000 |
commit | 220fef526a45bd5995979acfb918178145e5557a (patch) | |
tree | 1006c267e9f0fdf8bb5d5e9e40145417a7e2308c /fnet/src | |
parent | 0fe8cdb0a96fdce305a85058a3e84fcba69af5d4 (diff) |
remove recursive pseudo lock
this allows dropping events in parallel during/after transport thread
shutdown, which should be safe.
Diffstat (limited to 'fnet/src')
-rw-r--r-- | fnet/src/vespa/fnet/transport_thread.cpp | 13 | ||||
-rw-r--r-- | fnet/src/vespa/fnet/transport_thread.h | 4 |
2 files changed, 1 insertions, 16 deletions
diff --git a/fnet/src/vespa/fnet/transport_thread.cpp b/fnet/src/vespa/fnet/transport_thread.cpp index 590b6acbfff..262cdaec190 100644 --- a/fnet/src/vespa/fnet/transport_thread.cpp +++ b/fnet/src/vespa/fnet/transport_thread.cpp @@ -121,7 +121,7 @@ FNET_TransportThread::PostEvent(FNET_ControlPacket *cpacket, std::unique_lock<std::mutex> guard(_lock); if (IsShutDown()) { guard.unlock(); - SafeDiscardEvent(cpacket, context); + DiscardEvent(cpacket, context); return false; } _queue.QueuePacket_NoLock(cpacket, context); @@ -153,13 +153,6 @@ FNET_TransportThread::DiscardEvent(FNET_ControlPacket *cpacket, } } -void -FNET_TransportThread::SafeDiscardEvent(FNET_ControlPacket *cpacket, - FNET_Context context) -{ - std::lock_guard guard(_pseudo_thread); // be the thread - DiscardEvent(cpacket, context); -} void FNET_TransportThread::handle_add_cmd(FNET_IOComponent *ioc) @@ -247,7 +240,6 @@ FNET_TransportThread::FNET_TransportThread(FNET_Transport &owner_in) _lock(), _shutdownLock(), _shutdownCond(), - _pseudo_thread(), _started(false), _shutdown(false), _finished(false), @@ -264,8 +256,6 @@ FNET_TransportThread::~FNET_TransportThread() } if (_started.load() && !is_finished()) { LOG(error, "Transport: delete called on active object!"); - } else { - std::lock_guard guard(_pseudo_thread); } } @@ -624,7 +614,6 @@ FNET_TransportThread::Main() void FNET_TransportThread::Run(FastOS_ThreadInterface *thisThread, void *) { - std::lock_guard guard(_pseudo_thread); // be the thread if (!InitEventLoop()) { LOG(warning, "Transport: Run: Could not init event loop"); return; diff --git a/fnet/src/vespa/fnet/transport_thread.h b/fnet/src/vespa/fnet/transport_thread.h index b507c5dc31d..1911b11a81c 100644 --- a/fnet/src/vespa/fnet/transport_thread.h +++ b/fnet/src/vespa/fnet/transport_thread.h @@ -48,7 +48,6 @@ private: std::mutex _lock; // protects the Q std::mutex _shutdownLock; // used for synchronization during shutdown std::condition_variable _shutdownCond; // used for synchronization during shutdown - std::recursive_mutex _pseudo_thread; // used after transport thread has shut down std::atomic<bool> _started; // event loop started ? std::atomic<bool> _shutdown; // should stop event loop ? std::atomic<bool> _finished; // event loop stopped ? @@ -130,9 +129,6 @@ private: **/ void DiscardEvent(FNET_ControlPacket *cpacket, FNET_Context context); - // safely discard events using the pseudo thread mutex - void SafeDiscardEvent(FNET_ControlPacket *cpacket, FNET_Context context); - /** * Obtain a reference to the object holding the configuration for |