Всегда ли мьютекс удерживается потоком? - PullRequest
0 голосов
/ 28 октября 2018

Мьютекс приобретается потоком, если этот поток хочет получить доступ к критической области.

Но прежде чем поток попытается получить доступ к этой области, является ли мьютекс (если он никогда ранее не использовался) "свободным"или мьютекс всегда удерживается потоком?

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Мьютекс может быть «свободным» (т.е. разблокированным).Только разблокированный мьютекс может быть заблокирован (получен) потоком.

Кроме того, мьютекс pthread может быть создан как глобальная переменная со статической продолжительностью хранения, инициализированной с PTHREAD_MUTEX_INITIALIZE - такого родаобъекта мьютекса фактически создается во время " компиляции ", и, конечно, нет потоков, которые могли бы удерживать его оттуда ...

0 голосов
/ 28 октября 2018

Если никакой поток не блокирует мьютекс, что по умолчанию имеет место, мьютекс может считаться «свободным» в ваших словах.

Так что, чтобы ответить на ваш вопрос, нет, мьютекс не всегдадолжны быть проведены.И при создании у него не будет нити, удерживающей его.

...