LINUX.ORG.RU

pthread + mutex


0

0

Здравствуйте госопода программисты! Проясните мне pls ситуацию:

Есть 2 потока

Поток 1 делает pthread_mutex_lock Поток 2 делает pthread_mutex_lock и блокируется ...

Поток 1 заканчивает принудительно поток 2 (pthread_cancel)

Поток 1 выполняет какие то действия и при попытке выполнить pthread_mutex_unlock срубается весь процесс ...

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

Заранее всем благодарен ...

Всех поздравляю с прошедшими праздниками )

anonymous

>Поток 1 делает pthread_mutex_lock Поток 2 делает pthread_mutex_lock и >блокируется ... И это правильно ;)

>Поток 1 заканчивает принудительно поток 2 (pthread_cancel) Вопросик сразу же - а как насчет cleanup handlers?

>Поток 1 выполняет какие то действия и при попытке выполнить >pthread_mutex_unlock срубается весь процесс ... А как срубается? Посмотри может ты где обращаешся к переменной которой уже нет... Скорее всего память уже запорчена или сам мютекс разрушен.

>Это нормально? Как должно быть и где почитать, в манах чета про такую >ситуацию я не нашел ... Сие есть не нормально. Где почитать? Можно в книге "Programming with Posix thread" а можно и в манах покопаться на http://www.unix-systems.org/ или на http://docs.sun.com/db/doc/802-1949?q=threads

Удачи!

tvn
()

У меня как-то pthread_mutex_unlock всю прогу валил. Главное по странному как-то отработает номально около 10000 раз а потом возьмет да свалится :-(

Что только не делал. Всю прогу перелопатил. Даже пробовал убирать все динамическое выделение памяти. Хрен.

Потом просто немножко по другому реализовал и обшелся без использования pthread_mutex_unlock в том месте где он валится.

Dead ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.