diff --git a/src/libcamera/base/thread.cpp b/src/libcamera/base/thread.cpp
index 319bfda9a..de60567f6 100644
--- a/src/libcamera/base/thread.cpp
+++ b/src/libcamera/base/thread.cpp
@@ -238,7 +238,7 @@ Thread::Thread()
 
 Thread::~Thread()
 {
-	delete data_->dispatcher_.load(std::memory_order_relaxed);
+	delete data_->dispatcher_.load(std::memory_order_acquire);
 	delete data_;
 }
 
@@ -371,7 +371,7 @@ void Thread::exit(int code)
 	data_->exitCode_ = code;
 	data_->exit_.store(true, std::memory_order_release);
 
-	EventDispatcher *dispatcher = data_->dispatcher_.load(std::memory_order_relaxed);
+	EventDispatcher *dispatcher = data_->dispatcher_.load(std::memory_order_acquire);
 	if (!dispatcher)
 		return;
 
