diff --git a/common/ThreadSafeFIFO.h b/common/ThreadSafeFIFO.h index 54285dba..c1cbba8e 100644 --- a/common/ThreadSafeFIFO.h +++ b/common/ThreadSafeFIFO.h @@ -1,15 +1,15 @@ // SPDX-FileCopyrightText: 2024 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only -#ifndef JUNGFRAUJOCH_THREADSAFEFIFO_H -#define JUNGFRAUJOCH_THREADSAFEFIFO_H +#pragma once #include #include #include #include -template class ThreadSafeFIFO { +template +class ThreadSafeFIFO { std::queue queue; std::condition_variable c_empty, c_full; mutable std::mutex m; @@ -121,47 +121,3 @@ public: return utilization; } }; - -template class ThreadSafeSet { - std::set set; - std::condition_variable c; - std::mutex m; -public: - void Clear() { - std::unique_lock ul(m); - set = {}; - } - void Put(T val) { - std::unique_lock ul(m); - set.insert(val); - c.notify_one(); - }; - - int Get(T &val) { - std::unique_lock ul(m); - - if (set.empty()) return 0; - else { - auto iter = set.begin(); - val = *iter; - set.erase(iter); - return 1; - } - } - - T GetBlocking() { - std::unique_lock ul(m); - c.wait(ul, [&]{return !set.empty();}); - auto iter = set.begin(); - T tmp = *iter; - set.erase(iter); - return tmp; - }; - - size_t Size() const { - std::unique_lock ul(m); - return set.size(); - } -}; - -#endif //JUNGFRAUJOCH_THREADSAFEFIFO_H diff --git a/tests/ThreadSafeFIFOSetTest.cpp b/tests/ThreadSafeFIFOSetTest.cpp index 07627ce1..d0909d6f 100644 --- a/tests/ThreadSafeFIFOSetTest.cpp +++ b/tests/ThreadSafeFIFOSetTest.cpp @@ -97,26 +97,6 @@ TEST_CASE("ThreadSafeFIFO_GetTimeout_no_timeout","[ThreadSafeFIFO]") { std::cout << std::chrono::duration_cast(end - start).count() << std::endl; } -TEST_CASE("ThreadSafeSet","[ThreadSafeFIFO]") { - ThreadSafeSet set; - uint32_t tmp; - set.Put(0); - set.Put(1); - - REQUIRE(set.Get(tmp) == 1); - CHECK (tmp == 0); - - set.Put(0); - - REQUIRE(set.Get(tmp) == 1); - CHECK (tmp == 0); - - REQUIRE(set.Get(tmp) == 1); - CHECK (tmp == 1); - - REQUIRE(set.Get(tmp) == 0); -} - TEST_CASE("ThreadSafeFIFO_Utilization","[ThreadSafeFIFO]") { ThreadSafeFIFO fifo; uint32_t tmp;