diff --git a/src/threadloop.h b/src/threadloop.h
index ff6d6111b0938e2faa522aaaab62b22d906498b3..a3269f7213d2a2a254d39464f658e069a3ea32fb 100644
--- a/src/threadloop.h
+++ b/src/threadloop.h
@@ -114,6 +114,17 @@ public:
         return cv_.wait_for(lk, rel_time, [this, pred]{ return isStopping() || pred(); });
     }
 
+    template <typename Pred>
+    void
+    wait(Pred&& pred)
+    {
+        if (std::this_thread::get_id() != get_id())
+            throw std::runtime_error("Can not call wait outside thread context");
+
+        std::unique_lock<std::mutex> lk(mutex_);
+        cv_.wait(lk, [this, p = std::move(pred)]{ return isStopping() || p(); });
+    }
+
 private:
     std::mutex mutex_;
     std::condition_variable cv_;