/ / Що відбувається з потоком, коли виконується робота на його мутесі? - багатопотоковий, thread-safety, mutex, критичний розділ

Що відбувається з потоком, коли виконується робота на його мутесі? - багатопотоковий, thread-safety, mutex, критичний розділ

Mutexes використовуються для захисту критичних розділів. Давайте скажемо, що внизу вже було зроблено на mutex, і, хоча нитка, що зробила це в CS, 10 інших гілок прямо за ним, і вони робляться вниз на mutex, заставляючи себе спати. Коли перший потік виходить з критичного розділу і робить це на mutex, робить всі 10 потоків прокидатися і просто відновити те, що вони збираються зробити, а саме, вхід у критичну секцію? Чи не означає це, що тоді всі 10 можуть опинитися в критичному розділ одночасно?

Відповіді:

1 для відповіді № 1

Ні, тільки один нитка прокинеться і візьме на себе відповідальність за mutex. Решта їх залишиться сплячою. Яка річка, яка прокидається, зазвичай недетермінова.

Вищевказане є узагальненням, а деталі реалізації в кожній системі будуть різні. Наприклад, у порівнянні з Java Об'єкт # повідомляти () і Об'єкт # notifyAll ().