Ошибка подтверждения блокировки мьютекса pthreads - PullRequest
0 голосов
/ 04 февраля 2012

У меня есть две темы (созданные с помощью pthread_create).Это join -пригодные нити (не отсоединенные).Но я не делаю pthread_join на них, неправильно, я знаю, но вопрос не в этом.Потоки разделяют структуру данных в куче с мьютекс-блокировками внутри нее.Только тот, кто его блокирует, разблокирует мьютекс.

Я получаю следующую ошибку в некоторых случайных случаях.

pthread_mutex_lock.c:62: __pthread_mutex_lock: Assertion `mutex->__data.__owner == 0'

Вопрос в этом случае, правильно ли thread2 разблокирует мьютекс и делает pthread_destroy и умирает через exit(1), теперьthread1 пытается заблокировать тот же мьютекс после pthread_destroy, вы получите ошибку «this» или какую-то другую ошибку?

1 Ответ

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

Какая ошибка, которую вы получаете, если вы нарушаете правила, зависит от платформы.Так что вам придется проверить это самостоятельно, чтобы знать наверняка.Это условие «вам не разрешено даже пробовать это», поэтому нет правила для того, что должно произойти, когда вы это делаете.

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