mutex(fix): prevent race condition (part 2)

In addition to the previous commit, this commit makes threads need to
wait for the thread manager to say it took the mutex from them before
they can ask for it again.
This commit is contained in:
PowerUser64 2024-11-19 15:08:22 -08:00
parent d9b9d82c79
commit dc89fc4ce2

View file

@ -55,10 +55,13 @@ void *thread_task_increment(const struct thread_data &thread) {
// mutex
{
// tell the thread manager we want the mutex
// wait for permission to ask for the mutex
while (!*thread.manager_took_mutex)
;
// say we want the mutex
(*thread.wants_mutex) = true;
// block until we have the mutex
while (!*thread.has_mutex && *thread.manager_took_mutex)
while (!*thread.has_mutex)
;
// enter the mutex