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:
parent
d9b9d82c79
commit
dc89fc4ce2
1 changed files with 5 additions and 2 deletions
7
main.cpp
7
main.cpp
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue