|
|
@@ -415,10 +415,6 @@ void KThread::StartTermination() {
|
|
|
m_parent->ClearRunningThread(this);
|
|
|
}
|
|
|
|
|
|
- // Signal.
|
|
|
- m_signaled = true;
|
|
|
- KSynchronizationObject::NotifyAvailable();
|
|
|
-
|
|
|
// Clear previous thread in KScheduler.
|
|
|
KScheduler::ClearPreviousThread(m_kernel, this);
|
|
|
|
|
|
@@ -437,6 +433,13 @@ void KThread::FinishTermination() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // Acquire the scheduler lock.
|
|
|
+ KScopedSchedulerLock sl{m_kernel};
|
|
|
+
|
|
|
+ // Signal.
|
|
|
+ m_signaled = true;
|
|
|
+ KSynchronizationObject::NotifyAvailable();
|
|
|
+
|
|
|
// Close the thread.
|
|
|
this->Close();
|
|
|
}
|