From fe689c92081c1b3321e87b8f4bb0eaf5ce8dd214 Mon Sep 17 00:00:00 2001 From: mutouyun Date: Sun, 7 Apr 2019 17:01:51 +0800 Subject: [PATCH] optimize --- src/ipc.cpp | 34 ++++++++++++++++++++++------------ src/memory/detail.h | 5 ++--- src/platform/detail.h | 29 ++++++++++++++++++++++------- test/test_circ.cpp | 18 +++++++++--------- test/test_ipc.cpp | 8 ++++---- 5 files changed, 59 insertions(+), 35 deletions(-) diff --git a/src/ipc.cpp b/src/ipc.cpp index b561729..5dedcd3 100755 --- a/src/ipc.cpp +++ b/src/ipc.cpp @@ -28,8 +28,7 @@ namespace { using namespace ipc; using msg_id_t = std::size_t; -template +template struct msg_t; template @@ -111,19 +110,30 @@ bool wait_for(W& waiter, F&& pred, std::size_t tm) { return true; } +template +struct queue_generator { + + using queue_t = ipc::queue, Policy>; + + struct conn_info_t : conn_info_head { + queue_t que_; + + conn_info_t(char const * name) + : conn_info_head(name) + , que_(("__QU_CONN__" + + std::to_string(DataSize ) + "__" + + std::to_string(AlignSize) + "__" + name).c_str()) { + } + }; +}; + template struct detail_impl { -using queue_t = ipc::queue, Policy>; - -struct conn_info_t : conn_info_head { - queue_t que_; - - conn_info_t(char const * name) - : conn_info_head(name) - , que_((std::string{ "__QU_CONN__" } + name).c_str()) { - } -}; +using queue_t = typename queue_generator::queue_t; +using conn_info_t = typename queue_generator::conn_info_t; constexpr static void* head_of(queue_t* que) { return static_cast(que->elems()); diff --git a/src/memory/detail.h b/src/memory/detail.h index 327b691..90748e1 100644 --- a/src/memory/detail.h +++ b/src/memory/detail.h @@ -50,8 +50,7 @@ inline std::size_t classify(std::size_t size) { template