diff --git a/include/ConstantAccessor.h b/include/ConstantAccessor.h index 238b35920ce3855cf718d6b5d707460ba7c21ad0..2fb92fd4ffc28ab0443bcf9937410262d9efda8a 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 */