LINUX.ORG.RU

Posix Threads


0

0

$ vim test.c

#include <stdio.h>
#include <pthread.h>

void* thread_func(void* p)
{
int i;
for(i=0;i<10;i++)
printf("%d\n",i);
fflush(stdout);
return NULL;
}
int main(int argc,char **argv)
{
pthread_t tid;
pthread_create(&tid,NULL,&thread_func,NULL);
if(tid<0)
printf("error\n");
return 0;
}

$ cc -lpthread test.c -o test
$ ./test
$
Числа не выводятся. В чем тут ошибка? Пробовал pthread_join после pthread_create - то же самое.

anonymous

Ответ на: комментарий от Onanim

> Ты уверен? Точно exec с exit не путаешь? :-)))

вы все-таки мне поверьте.

еще раз напоминаю, exit_group - вот это действительно
завершает все потоки, и не важно, какой из потоков его
вызвал.

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

> Ты уверен? Точно exec с exit не путаешь? :-)))

на всякий случай, пока вы меня снова в бронепоезд
не запихнули: разумеется, я имею в виду что остальные
потоки будут завершены! а процесс, сохранив свой pid,
продолжит выполнение в новой exec ипостаси, и вместо
TASK_ZOMBIE станет вполне RUNNING.

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

> > Ты уверен? Точно exec с exit не путаешь? :-)))

> вы все-таки мне поверьте.

> еще раз напоминаю, exit_group - вот это действительно
> завершает все потоки, и не важно, какой из потоков его
> вызвал.

Мы наверное разные форумы видим :-/

Ну причем тут этот exit_group, это же Вы, idle, писали,
может перечитаете еще раз:

!> и вот из этого состояния его никаким wait'ом не вытащить, пока все
!> остальные потоки не завершатся, или один из потоков не сделает exec
!> (что, вообще-то приведет к завершению всех потоков, так что это то
!> же самое).

Каким боком тут exec-то? Я и спросил, может Вы с exit перепутали?
На случай, если не перепутали, специально сделал тест:
pthread_create()
pthread_exit() из main
в оставшемся треде делаем exec*()

Процесс как жил, так и живет, никакого "завершения всех потоков"
не наблюдается. Вот я спрашиваю - может все-таки перепутали exec
и exit ?

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

О! Ответ опередил вопрос ;-) Пока я там с тестом маялся...
Ну дык теперь понятна Ваша мысль, Вы просто как-нить излагайте
подоступнее, чтобы простой application programmer мог асилить :-)))
А то у меня с чтением между строк что-то не очень :-(

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