LINUX.ORG.RU

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

zaz ★★★★
()

А что ты понимаешь под раскручиванием?
на сколько я помню у каждого трэда свой стэк

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

В том то и дело что свой но после завершения треда стек не расвобождается пока кто нибудь не заберет код возврата (точнее void*). Для того чтоб такой фигни не происходило нужно треды "отсоединять" от основного патока для этого есть функция detach - и у меня помнится она работала нормально, но я сейчас ее не пользую а создаю треди сразу детачнутими.

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

// pthread_detach bugs
// g++ test.cpp -lpthread
// hbz
#include <sched.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>

class A
{
public:
A(){ printf("A::A()\n"); }
~A(){ printf("A::~A()\n"); }
};

void * thread1(void * thread_arg)
{
A a;
printf("thread1 started\n");
for(int i=0;i<10;i++)
sleep(1);

return NULL;
}

int main()
{
pthread_t th1;
if(pthread_create(&th1,NULL,thread1,NULL) != 0){
perror("pthread_create failed");
return 1;
}
pthread_detach(th1);

return 0;
}

Деструктор не вызывается ...

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

Есть подозрение, что речь не о pthreads, а о LinuxThreads, т.к. там такая фигня проявляется.

Когда выходит основной процесс (цивилизованно через exit или через падение в корку), то manager thread это обнаруживает и шлёт всем-всем-всем SIGKILL (как я понял, независимо от его attached/detached state), так что твой thread1 умирает в sleep. :)

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

А это противоречит спецификации POSIX? Я всегда думал, что смысл detached в том, что на них join не нужно делать, а не в том, что они долго живут.

P.S. Ногами просьба не пинать... в детали POSIX не вчитывался по причине отсутствия надобности. :)

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

стоять мурзик (С) Гоблин. вопрос еще про pthread_exit.. если я из работающего потока вызову эту функцию то что с ресурсами будет. в доках не нашел внятного объяснения. может расскажет кто или урл подкинет?

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