/ / някои въпроси относно pthread_mutex_lock - многоредово четене

някои въпроси относно pthread_mutex_lock - multithreading

когато thread1 вече придоби заключване на mutexобект, ако thread2 се опита да придобие заключване на същия mutex обект, thread2 ще бъде блокиран. ето моите въпроси: 1. как ще thread2 узнае, че mutex обект е отключен? 2. ще thread2 се опита да придобие заключване на предварително определени интервали от време?

Отговори:

1 за отговор № 1

Чувствам неразбиране как работи мютекс. Когато нишка 2 се опита да придобие мутекс, който вече е собственост на нишка 1, повикването, което се опитва да вземе мутекса, няма да се върне до мутексът става достъпен (освен ако нямате изчакване с вариант на trylock ()).

Така че нишка 2 не е необходимо да се пристяга там и да се пазиопитвате се да вземете мутекс (освен ако не използвате тайм-аут, за да можете да прекъснете опита да вземете мутекс въз основа на някакво друго условие, като условие за отмяна).


0 за отговор № 2

Това наистина зависи от ОС, но какво обикновенослучва се, че thread2 се спира и се поставя в списък с чакания, поддържан от mutex. Когато mutex стане наличен, нишка в списъка с чакащи на mutex се премахва от списъка и се връща обратно в списъка на активните нишки. След това ОС може да го планира така, както обикновено. ,