From 13c503b73b4ecc8ce4a6e344f9ac15202985d686 Mon Sep 17 00:00:00 2001 From: liuxiaolong <liuxiaolong@aiotlink.com> Date: 星期二, 20 七月 2021 19:48:58 +0800 Subject: [PATCH] fix memory leak --- utest/robust_test.cpp | 68 +--------------------------------- 1 files changed, 2 insertions(+), 66 deletions(-) diff --git a/utest/robust_test.cpp b/utest/robust_test.cpp index 3270481..23dc058 100644 --- a/utest/robust_test.cpp +++ b/utest/robust_test.cpp @@ -68,26 +68,14 @@ std::atomic<uint64_t> nwrite(0); std::atomic<uint64_t> writedone(0); -#if 1 - const int kPower = 0; - typedef AtomicQueue<kPower> Rcb; + typedef AtomicQ63 Rcb; Rcb tmp; - // BOOST_CHECK(tmp.like_empty()); BOOST_CHECK(tmp.push(1)); - if (kPower != 0) { - BOOST_CHECK(tmp.tail() == 1); - } - BOOST_CHECK(tmp.head() == 0); int64_t d; BOOST_CHECK(tmp.pop(d)); - if (kPower != 0) { - // BOOST_CHECK(tmp.like_empty()); - BOOST_CHECK(tmp.head() == 1); - BOOST_CHECK(tmp.tail() == 1); - } - ShmObject<Rcb> rcb(shm, "test_rcb"); + NamedShmObject<Rcb> rcb(shm, "test_rcb", eOpenOrCreate); bool try_more = true; auto Writer = [&]() { @@ -111,58 +99,6 @@ } } }; - -#else - typedef Circular<int64_t> Rcb; - ShmObject<Rcb> rcb(shm, "test_rcb", 16, shm.get_segment_manager()); - - typedef FMutex Mutex; - // typedef SemMutex Mutex; - Mutex mtx(123); - auto Writer = [&]() { - uint64_t n = 0; - while ((n = nwrite++) < nmsg) { - auto Write = [&]() { - robust::Guard<Mutex> lk(mtx); - if (rcb->full()) { - return false; - } else { - rcb->push_back(n); - return true; - } - // return rcb->push_back(n); - }; - while (!Write()) { - // MySleep(); - } - ++writedone; - } - }; - std::atomic<uint64_t> nread(0); - auto Reader = [&]() { - while (nread.load() < nmsg) { - int64_t d; - auto Read = [&]() { - robust::Guard<Mutex> lk(mtx); - if (rcb->empty()) { - return false; - } else { - d = rcb->front(); - rcb->pop_front(); - return true; - } - // return rcb->pop_front(d); - }; - if (Read()) { - ++nread; - total += d; - } else { - // MySleep(); - } - } - }; - -#endif auto status = [&]() { auto next = steady_clock::now(); -- Gitblit v1.8.0