From 601d46f9d58e36a3d9d4f61f06ef7cdaab837c19 Mon Sep 17 00:00:00 2001 From: Martin Hierholzer <martin.hierholzer@desy.de> Date: Thu, 21 Jun 2018 17:21:25 +0200 Subject: [PATCH] ConstantAccessor: implement interrupt() properly --- include/ConstantAccessor.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/include/ConstantAccessor.h b/include/ConstantAccessor.h index 238b3592..2fb92fd4 100644 --- a/include/ConstantAccessor.h +++ b/include/ConstantAccessor.h @@ -41,7 +41,9 @@ namespace ChimeraTK { return; } // block forever - boost::promise<void>().get_future().wait(); + promise.get_future().wait(); + // if we get here, interrupt() has been called + throw boost::thread_interrupted(); } bool doReadTransferNonBlocking() override { @@ -82,12 +84,16 @@ namespace ChimeraTK { AccessModeFlags getAccessModeFlags() const override { return {}; } + void interrupt() override { promise.set_value(); } + protected: std::vector<UserType> _value; bool firstRead{true}; + boost::promise<void> promise; + }; } /* namespace ChimeraTK */ -- GitLab