Что происходит с потоком, когда на его мьютексе выполняется up? - PullRequest
1 голос
/ 18 марта 2011

Мьютексы используются для защиты критических участков. Допустим, на мьютексе уже было выполнено отключение, и хотя поток, который сделал это, находится в CS, 10 других потоков находятся прямо за ним и выполняют мьютекс, усыпляя себя. Когда первый поток выходит из критической секции и выполняет мьютекс, все 10 потоков просыпаются и просто возобновляют то, что они собирались сделать, а именно, входят в критическую секцию? Не значит ли это, что все 10 могут одновременно оказаться в критическом разделе?

1 Ответ

1 голос
/ 18 марта 2011

Нет, только один поток проснется и станет владельцем мьютекса.Остальные будут спать.Какой поток является тем, который просыпается, обычно не является детерминированным.

Вышеприведенное является обобщением, и детали реализации будут различными в каждой системе.Например, в Java сравните Object # notify () и Object # notifyAll () .

...