pthread_cond_wait разблокирует мьютекс, связанный с ним. исходный код? - PullRequest
1 голос
/ 02 февраля 2012

Я знаю, что pthread_cond_wait разблокирует мьютекс, связанный с ним. То, что я хотел бы найти, это исходный код pthread_cond_wait и найти разблокировку кода мьютекса. Будь добр, если вопрос глупый. :). Какую библиотеку мне нужно скачать и проверить. Я использую Ubuntu.

Ответы [ 3 ]

3 голосов
/ 02 февраля 2012

Функции pthread_cond_* и pthread_mutex_* являются частью NPTL, который теперь является частью glibc на любом современном компьютере с Linux.Последняя версия glibc-2.11.1, и вы можете найти исходный код на GNU glibc сайте загрузки .

2 голосов
/ 02 февраля 2012

Другой альтернативой может быть OpenSolaris source ; если вас интересует Linux, то есть glibc, ответ @David Schwartz может быть более «точным».

0 голосов
/ 02 февраля 2012

Хотя это не совсем ответ на ваш вопрос, важным аспектом того, как происходит разблокировка мьютекса, является то, что это должно быть сделано после структура переменной условия обновляется, чтобы отразить присутствие официанта , Это то, что означает стандарт, когда он говорит, что функция «атомарно» разблокирует мьютекс и ждет. В противном случае будет существовать такое же состояние гонки, как если бы вы просто разблокировали мьютекс перед вызовом pthread_cond_wait: другой поток мог бы получить мьютекс и изменить состояние, от которого зависит предикат, после того, как вы проверили предикат (и нашли его ложным), но до Вы позвонили pthread_cond_wait. Тогда вы пропустите сигнал и будете ждать в режиме ожидания, возможно, навсегда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...