pthread_mutex_lock возврат не проверен - PullRequest
7 голосов
/ 09 июня 2011

Мне действительно интересно, почему все исходные коды, которые реализуют pthread_mutex_lock , никогда не проверяют его возвращаемое значение, как определено:

документация по pthread

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

Есть ли причина, по которой я пропустил, чтобы она не проверялась?

Ответы [ 2 ]

3 голосов
/ 09 июня 2011

По сути, единственной «интересной» ошибкой является EINVAL, которая в большинстве программ происходит только из-за повреждения памяти или, как я знаю из собственного болезненного опыта, во время завершения работы программы после того, как деструкторы уже уничтожили некоторые мьютексы. На мой взгляд, единственным разумным ответом на такую ​​ошибку является прерывание программы, что, с другой стороны, очень неудобно, если ошибки происходят именно потому, что программа уже закрывается. Конечно, это можно решить, но это совсем не так просто, и для большинства программ оно не приносит много пользы.

1 голос
/ 09 июня 2011

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

В книгах код проверки ошибок часто опускается для ясности изложения.

Что касается кода реального мира, я полагаю, что ответ должен состоять в том, что предполагается, что вероятность неудачи очень мала. Является ли это хорошее предположение спорно.

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