LINUX.ORG.RU

Pthread, c++.


0

0

Народ, помогите!

вопрос: заспецифицировано ли где нибудь в POSIXе или любом другом стандарте, должны ли вызываться деструкторы стека потока при вызове pthread_exit и pthread_cancel?

Как с этим дело в g++?

Кто-нибудь видел описание поведения g++ по этому вопросу?

★★★

В явном виде такими знаниями не обладаю, но уверен в отрицательном ответе.

Автоматические переменные уничтожаются при выходе из функции или при исключениях. Здесь ни то, ни другое.

anonymous
()
Ответ на: комментарий от anonymous

Проблема в том, что вызываются (для 3.2.3), но я совсем не могу понять должны ли, в каких версиях и с какими ограничениями и с какого черта они вызываются.

gena2x ★★★
() автор топика

> When the request is granted, there is a cancellation process that occurs asynchronously to the returning of the pthread_cancel() function to the calling thread. If the thread has cancellation cleanup handler tasks, they are performed. When the last handler returns, the destructors for thread-specific data, if any, are called and the thread is terminated. This is the cancellation process.

http://www.phptr.com/articles/article.asp?p=169479&seqNum=9&rl=1

http://cs.pub.ro/~apc/2003/resources/pthreads/uguide/concept7.htm

http://cs.pub.ro/~apc/2003/resources/pthreads/uguide/concep29.htm

http://gcc.gnu.org/ml/gcc-help/2004-09/msg00194.html

> pthread library is separate from gcc. The compiler proper does not care.

http://gcc.gnu.org/ml/gcc-help/2004-09/msg00194.html

bugmaker ★★★★☆
()

> должны ли вызываться деструкторы стека потока при вызове pthread_exit и pthread_cancel?

Лучше всего - не пользоваться этими функциями. Если сильно нужно - курить pthread_cleanup_{push,pop} и исходники glibc/g++.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Спасибо всем большое - я целый день пытался в интернете найти информацию, пока не поискал на gcc mailing list.

Для рефенса ищущим ЕЩЁ классная ссылка. http://www.codesourcery.com/archives/c%2B%2B-pthreads/thrd2.html

Убиться. Рекомендую никому не использовать pthread_cancel и pthread_exit в c++ ни при каких обстоятельствах.

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