Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.07.2012, 10:23   #1
MrGukk
Пользователь
 
Регистрация: 09.05.2011
Сообщений: 33
По умолчанию В двух тредах запутался

Добрый день!

Решил тут почитать про треды и их реализацию в ОС линукс. С тредами раньше не работал.
В итоге наваял программу ниже:

Код:
#include <pthread.h>
#include <stdio.h>

void* thread_function (void* thread_arg)
{
        long i = *((long*) thread_arg);
        printf("i = %d", i);
        long j=1;
        while(j < i){
                printf("j=%d\n", j);
                j*=2;
        }

}

int main()
{
        pthread_attr_t attr;
        pthread_t thread;

        pthread_attr_init(&attr);
        pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
        long n = 900000000;
        pthread_create (&thread, &attr, &thread_function, &n);
        pthread_attr_destroy (&attr);
        sleep(0.8);
        return 0;
Как видно, создается отдельный тред (detached) - на сколько я понимаю он существует в том же процессе что и основной тред.
Значение задержки - sleep - было подобрано так чтобы главный тред успел бы создать новый отдельный тред и завершится пока "отдельный" тред не завершил работу (старик умирает, потомок остается жить) (Честный обмен(с)) - в этом собственно и заключался эксперимент

Далее собираю с помощью команды: gcc -o detached detached.c -lpthread
Запускаю: ./detached

Вот дальше происходят вещи не очень мне понятные.
Прога подвисает, а команда ps ax |grep detached
выдает:
10338 pts/2 S+ 0:00 ./detached

Процесс спит - не завершается. Хотя, на сколько я понимаю, отдельный тред существует вне зависимости от других тредов, пусть даже это главный тред.

Не могли бы вы прокомментировать данную ситуацию? Что ему не дает умереть?
MrGukk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
зАпутался с stringrid-ом denl9 Общие вопросы Delphi 9 10.05.2012 22:50
Запутался в написании. tesma Паскаль, Turbo Pascal, PascalABC.NET 4 25.02.2012 13:39
Запутался с меню nikolj HTML и CSS 2 27.11.2011 18:44
запутался! mistertvister Помощь студентам 3 28.10.2009 14:52
запутался в процедурах world12_tk Помощь студентам 6 03.03.2009 18:57