Модераторы: xvr

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Потоки в с++, учусь работать с потоками 
:(
    Опции темы
XaverOz
Дата 9.3.2011, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 9.3.2011

Репутация: нет
Всего: нет



Учусь работать с потоками на линуксовом с++. Решил написать тестовую программу устроена следующим образом: существует класс при создании объекта класса происходит запуск потока который все время в бесконченом цикле увеличивает значение переменной если значение больше 532, переменная становится равна 0, так же в классе есть метод который позволяет получить значение этой переменной. Для организации взаимного исключения использовались мьютексы.
Код

class Devemu {
    int VarInc;
    pthread_t thread_id;
    pthread_mutex_t inc_mutex;
    
    void Increm() {
        for(;;) {
            pthread_mutex_lock(&inc_mutex);
            if (VarInc > 532) VarInc = 0;
            VarInc++;
            pthread_mutex_unlock(&inc_mutex);
        }
    }

public:
    static void* IncWrapper(void* thisPtr) {
        ((Devemu*) thisPtr)->Increm();
        return NULL;
    }
    Devemu() {
        VarInc = 0;
        pthread_mutex_init(&inc_mutex, NULL);
        pthread_create(&thread_id, NULL, &Devemu::IncWrapper, NULL);
    }
    int Var() {
        int i;
        pthread_mutex_lock(&inc_mutex);
        i =  VarInc;
        pthread_mutex_unlock(&inc_mutex);
        return i;
    }
}; 

int main(int argc, char** argv) {

    Devemu* em = new Devemu();
    int i = 0;
    for(; i < 35; i++) {
        printf("%d\n", em->Var());
    }
    return (EXIT_SUCCESS);
}


Данный код возвращает ошибку сегментации не могу понять почему

PM MAIL   Вверх
azesmcar
Дата 9.3.2011, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 1
Всего: 211



Цитата(XaverOz @  9.3.2011,  21:46 Найти цитируемый пост)
Данный код возвращает ошибку сегментации не могу понять почему

потому-что аргументом в поток передается NULL вместо this.
PM   Вверх
XaverOz
Дата 9.3.2011, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 9.3.2011

Репутация: нет
Всего: нет



Предлагаете переделать вот так?
Код

Devemu() {
        VarInc = 0;
        pthread_mutex_init(&inc_mutex, NULL);
        pthread_create(&thread_id, NULL, &Devemu::IncWrapper, this);
    }


Это сообщение отредактировал(а) XaverOz - 9.3.2011, 22:10
PM MAIL   Вверх
azesmcar
Дата 9.3.2011, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 1
Всего: 211



Цитата(XaverOz @  9.3.2011,  22:10 Найти цитируемый пост)
Предлагаете переделать вот так?

Да.
Не уверен, что это единственная ошибка, но во всяком случае пока что это попалось на глаза.

Это сообщение отредактировал(а) azesmcar - 9.3.2011, 22:35
PM   Вверх
fish9370
Дата 10.3.2011, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



ну вообще поток перед выходом нужно прибить.. используя pthread_cancel() или вставить в цикл проверку на завершение и дождаться пока он сам умрет с помощью pthread_join()

а потом выходить..

Это сообщение отредактировал(а) fish9370 - 10.3.2011, 10:46


--------------------
undefined
PM MAIL WWW ICQ   Вверх
fish9370
Дата 10.3.2011, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



да и мютекс выделеный динамически нужно освобождать функцией pthread_mutex_destroy()..


--------------------
undefined
PM MAIL WWW ICQ   Вверх
XaverOz
Дата 10.3.2011, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 9.3.2011

Репутация: нет
Всего: нет



спасибо заработало 
PM MAIL   Вверх
boostcoder
Дата 10.3.2011, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



Цитата(fish9370 @  10.3.2011,  10:36 Найти цитируемый пост)
поток перед выходом нужно прибить.. используя pthread_cancel()

не нужно.
PM WWW   Вверх
fish9370
Дата 10.3.2011, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



Цитата(boostcoder @  10.3.2011,  16:16 Найти цитируемый пост)
не нужно


не уверен, что это безопасно.. прошу аргументированный ответ..


--------------------
undefined
PM MAIL WWW ICQ   Вверх
boostcoder
Дата 10.3.2011, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



Цитата(fish9370 @  10.3.2011,  17:38 Найти цитируемый пост)
прошу аргументированный

RTFM smile 
PM WWW   Вверх
fish9370
Дата 10.3.2011, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



boostcoder, ты в вопросе не разбираешься.. ты бы хоть сказал на какой ман ты ссылаешься.. 

Это сообщение отредактировал(а) fish9370 - 10.3.2011, 21:22


--------------------
undefined
PM MAIL WWW ICQ   Вверх
boostcoder
Дата 10.3.2011, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



Цитата(fish9370 @  10.3.2011,  21:20 Найти цитируемый пост)
ты в вопросе не разбираешься.

раз уж ты так сказал, значит так и есть smile
PM WWW   Вверх
fish9370
Дата 10.3.2011, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



Цитата(boostcoder @  10.3.2011,  21:49 Найти цитируемый пост)
раз уж ты так сказал, значит так и есть


я мог бы и промолчать, но это и без того видно.. ты воздух сотрясаешь, а по делу тебе сказать нечего.. мое мнение..


--------------------
undefined
PM MAIL WWW ICQ   Вверх
boostcoder
Дата 10.3.2011, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



Цитата(fish9370 @  10.3.2011,  22:21 Найти цитируемый пост)
ты воздух сотрясаешь, а по делу тебе сказать нечего

ну... это самый весомый аргумент. даже не поспоришь smile 
PM WWW   Вверх
fish9370
Дата 10.3.2011, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



Цитата(boostcoder @  10.3.2011,  22:23 Найти цитируемый пост)
ну... это самый весомый аргумент. даже не поспоришь 


может, ты все-таки перестанешь умничать, и что-то ответишь?

напаминаю вопрос:

почему ты считаешь, завершение главного потока, без завершения дочерних потоков, безопасным?


Это сообщение отредактировал(а) fish9370 - 10.3.2011, 22:32


--------------------
undefined
PM MAIL WWW ICQ   Вверх
boostcoder
Дата 10.3.2011, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



fish9370, ты правда веришь, что у меня получится в миллион_первый раз написать man по pthread_cancel(), и кучу материала в инетах описывающего надобность и принцип работы этой функции, лучше чем это написали до меня?
я не верю. потому и не вижу смысла сотрясать воздух.
PM WWW   Вверх
fish9370
Дата 10.3.2011, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



я нарисую ситуацию которая была у меня, и почему я вообще задал этот вопрос..

я написал программку, в которой есть консоль, и некоторый набор команд.. одна из команд загрузить модуль, выгрузить модуль.. (модуль это .so)

в одном из модулей есть поток, в котором он слушет один сокет и при получении из него данных, с некоторым преобразованием, записывает в другой..

все прекрасно работает.. но что я заметил - если попытаться выгрузить этот модуль мы получаем нарушение сегментации.. если поток предварительно прибить нарушения не наблюдается..

почему так?

я понимаю, что случай здесь другой, но что это абсолютно безопасно, я не уверен.. я не просил ман по команде pthread_cancel(), я хотел чтобы ты описал процесс убийства дочерних потоков в реализации pthreads.. чтобы я успокоился, потому-что это безопасно..

спасибо..

Это сообщение отредактировал(а) fish9370 - 10.3.2011, 23:36


--------------------
undefined
PM MAIL WWW ICQ   Вверх
boostcoder
Дата 10.3.2011, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



в "расширенный" манах и литературе по программированию под линукс, о pthread_cancel() пишется как об одном из вариантов завершения(прерывания) потока. так же, в большинстве расширенной литературы, есть оговорка о том, pthread_cancel() поток не завершает. так же, есть оговорка о том, что для того чтоб поток завершился при вызове pthread_cancel(), в функции потока должны быть функции, являющиеся точкой выхода, и приводится список таких функций. так же, говориться о том, что если ты не уверен в том, является ли какая-то функция точкой выхода, то нужно вставить в код функции потока вызов pthread_testcancel(). и напоследок, говориться о том, что все же лучше, принцип прерывания потока взять в свои руки, реализовав проверку некоторого флага(желательно атомарного, на худой конец volatile), значение которого указывает на реакцию функции потока.

что-то еще?

Это сообщение отредактировал(а) boostcoder - 10.3.2011, 23:48
PM WWW   Вверх
fish9370
Дата 10.3.2011, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



Цитата(boostcoder @  10.3.2011,  23:47 Найти цитируемый пост)
что-то еще?


ты все-таки првел мне ман по pthread_cancel()  smile 

но я настаиваю на своем вопросе, как реализованы потоки в pthreads? где гарантии, что они не будут реализованны в виде отдельных процессов (на какой-то платформе, в какой-то версии ядра)? где гарантии, что дочерний процесс ядро убъет раньше чем родителя? и тот не обратится к данным которые уже не принадлежат родительскому процессу, потому-что тот уже откинулся..

полагаю, что ответы на это есть в стандарте, и думал ты знаешь где именно..

Это сообщение отредактировал(а) fish9370 - 10.3.2011, 23:58


--------------------
undefined
PM MAIL WWW ICQ   Вверх
boostcoder
Дата 11.3.2011, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



Цитата(fish9370 @  10.3.2011,  23:56 Найти цитируемый пост)
но я настаиваю на своем вопросе

ты не заметил, что у тебя уже пять разных вопросов?
и только в последнем посте их три.


я ответил на этот вопрос:
Цитата(fish9370 @  10.3.2011,  17:38 Найти цитируемый пост)
не уверен, что это безопасно.. прошу аргументированный ответ.. 



остальное - в новой теме.

Добавлено @ 00:05
а это:
Цитата(fish9370 @  10.3.2011,  21:20 Найти цитируемый пост)
 ты в вопросе не разбираешься

Цитата(fish9370 @  10.3.2011,  22:21 Найти цитируемый пост)
ты воздух сотрясаешь, а по делу тебе сказать нечего

не располагает к какой-то помощи в твою пользу. и...попросту пустозвонство, говорящее о том, что ты пытаешься повысить свою самооценку. мерзко и противно...

Это сообщение отредактировал(а) boostcoder - 11.3.2011, 00:43
PM WWW   Вверх
fish9370
Дата 11.3.2011, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



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

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

Это сообщение отредактировал(а) fish9370 - 11.3.2011, 08:38


--------------------
undefined
PM MAIL WWW ICQ   Вверх
mes
Дата 11.3.2011, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(fish9370 @  10.3.2011,  23:11 Найти цитируемый пост)
мне впринципе, все-равно, что ты не знаешь ответ..
и помощь мне твоя не нужна

ну и зачем  на форуме остальным настроение портить ? 
сами все знаете - просто отлично.. но для чего тогда тему создали, и убили время тех, кто зашел сюда Вам помочь ? 

с другой стороны хорошо, что Вы сразу свою позицию сразу обозначили, значит в следующие Ваши темы можно даже и не заглядывать.. 



Это сообщение отредактировал(а) mes - 11.3.2011, 00:26


--------------------
PM MAIL WWW   Вверх
fish9370
Дата 11.3.2011, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



mes,  я сказал мне его помощь не нужна, я прошу прощения непосредственно перед Вами.. 
а если взглянуть на его ответ типа - RTFM (Read The Fucking Manual), то думаю моя реакция вполне оправдана.. при том, что он совершенно не отвечал по теме (и так и не ответил)

да, и тему не я создал..


--------------------
undefined
PM MAIL WWW ICQ   Вверх
mes
Дата 11.3.2011, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(fish9370 @  10.3.2011,  23:30 Найти цитируемый пост)
я прошу прощения непосредственно перед Вами

а остальные пусть и  дальше ходят оскорбленными ..  smile 

Цитата(fish9370 @  10.3.2011,  23:30 Найти цитируемый пост)
а если взглянуть на его ответ типа - RTFM (Read The Fucking Manual), 

ну прежде  всего оскорбление (если такое можно  притянуть к _общепринятому_ термину) направлено было в сторону документации, а не на Вас лично.. 

Цитата(fish9370 @  10.3.2011,  23:30 Найти цитируемый пост)
то думаю моя реакция вполне оправдана.. 

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

Цитата(fish9370 @  10.3.2011,  23:30 Найти цитируемый пост)
при том, что он совершенно не отвечал по теме (и так и не ответил)

ну так не удивительно..  и многие другие не ответили, потому что в такое спасибо никому даром не надо.. 

Цитата(fish9370 @  10.3.2011,  23:30 Найти цитируемый пост)
да, и тему не я создал.. 

Сути не меняет, ибо сей вопрос исходил от Вас..




--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 11.3.2011, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



все что я хотел сказать этим ответом:
user posted image
так это то, что смысл в pthread_cancel() переоценен, а порой его просто нет.

второе.
этим ответом я дал направление почитать доку по pthread_cancel().
user posted image

а дальше понеслось...

Добавлено через 4 минуты и 29 секунд
а в том, что в аббревиатуре "RTFM" есть якобы что-то оскорбительное - это не ко мне. не я ее придумал. и не я ввел "канон" на использование этой аббревиатуры в подобных ситуациях.
но, соглашусь с тем, что аббревиатура свою роль выполняет. коротко и ясно!
PM WWW   Вверх
fish9370
Дата 11.3.2011, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



boostcoder, ты мои посты вообще читал? может хватит выдирать цитаты из контекста? 
ответа нет..

удачи тебе..  smile 


--------------------
undefined
PM MAIL WWW ICQ   Вверх
mes
Дата 11.3.2011, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(fish9370 @  11.3.2011,  07:34 Найти цитируемый пост)
ответа нет..

касательно этой цитаты :
Цитата(fish9370 @  10.3.2011,  09:36 Найти цитируемый пост)
ну вообще поток перед выходом нужно прибить.. используя pthread_cancel() или 

ответ есть.. нужно просто вдумчиво прочитать.. 





--------------------
PM MAIL WWW   Вверх
fish9370
Дата 11.3.2011, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



Цитата(mes @  11.3.2011,  09:36 Найти цитируемый пост)
нужно просто вдумчиво прочитать..


mes, вопрос был - почему считается безопасным оставлять рабочими дочерние потоки перед выходом?

pthread_cancel() был предложен как один из способов завершения потока, причем здесь вообще эта функция?




--------------------
undefined
PM MAIL WWW ICQ   Вверх
mes
Дата 11.3.2011, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(fish9370 @  11.3.2011,  09:11 Найти цитируемый пост)
вопрос был - почему считается безопасным оставлять рабочими дочерние потоки перед выходом?

а я вижу иначе :
Цитата(boostcoder @  10.3.2011,  15:16 Найти цитируемый пост)
Цитата

поток перед выходом нужно прибить.. используя pthread_cancel()

не нужно. 

подсказка :
Цитата

Дело в том, что поток может не только самостоятельно выбрать порядок завершения в ответ на вызов pthread_cancel(), но и вовсе игнорировать этот вызов.



Цитата(mes @  11.3.2011,  09:29 Найти цитируемый пост)
а я вижу иначе :

в общем boostcoder пытался обратить ваше внимание на неправильно поставленный Вами акцент над выражением "нужно, используя  pthread_cancel()".. 




Это сообщение отредактировал(а) mes - 11.3.2011, 10:34


--------------------
PM MAIL WWW   Вверх
fish9370
Дата 11.3.2011, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



почему считается безопасным оставлять рабочими дочерние потоки перед выходом?


--------------------
undefined
PM MAIL WWW ICQ   Вверх
mes
Дата 11.3.2011, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(fish9370 @  11.3.2011,  10:08 Найти цитируемый пост)
почему считается безопасным оставлять рабочими дочерние потоки перед выходом? 

не считается, зависит от ситуации..


Это сообщение отредактировал(а) mes - 11.3.2011, 13:41


--------------------
PM MAIL WWW   Вверх
fish9370
Дата 11.3.2011, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



Цитата(mes @  11.3.2011,  13:40 Найти цитируемый пост)
не считается, зависит от ситуации..


значит потоки нужно тушить перед выходом?


--------------------
undefined
PM MAIL WWW ICQ   Вверх
mes
Дата 11.3.2011, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(fish9370 @  11.3.2011,  12:57 Найти цитируемый пост)
значит потоки нужно тушить перед выходом? 


Цитата(boostcoder @  10.3.2011,  22:47 Найти цитируемый пост)
и напоследок, говориться о том, что все же лучше, принцип прерывания потока взять в свои руки, реализовав проверку некоторого флага(желательно атомарного, на худой конец volatile), значение которого указывает на реакцию функции потока.




--------------------
PM MAIL WWW   Вверх
baldina
Дата 11.3.2011, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 1
Всего: 101



развели тут...
fish9370, если Вас действительно интересует ответ, создайте тему
PM MAIL   Вверх
fish9370
Дата 11.3.2011, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



Цитата(fish9370 @  10.3.2011,  10:36 Найти цитируемый пост)
вставить в цикл проверку на завершение и дождаться пока он сам умрет


Цитата(boostcoder @  10.3.2011,  16:16 Найти цитируемый пост)
не нужно


Цитата(fish9370 @  10.3.2011,  17:38 Найти цитируемый пост)
не уверен, что это безопасно.. прошу аргументированный ответ


Цитата(boostcoder @  10.3.2011,  17:44 Найти цитируемый пост)
RTFM


бла-бла-бла..  smile 

Цитата(boostcoder @  10.3.2011,  23:47 Найти цитируемый пост)
все же лучше, принцип прерывания потока взять в свои руки, реализовав проверку некоторого флага(желательно атомарного, на худой конец volatile)



no comments


--------------------
undefined
PM MAIL WWW ICQ   Вверх
mes
Дата 11.3.2011, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(fish9370 @  11.3.2011,  14:22 Найти цитируемый пост)
Цитата

вставить в цикл проверку на завершение и дождаться пока он сам умрет

Цитата

не нужно


не стоит менять контекст в котором говорилось про "не нужно"..
там явно выделено о чем речь.. а домысливать и потом вешать ярлыки в связи со своим воображением не хорошо.. 




--------------------
PM MAIL WWW   Вверх
boostcoder
Дата 11.3.2011, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



mes, та ладно...
мне вот непонятно, почему адрес метода не является constexpr. сейчас тему создам. опять о том же smile
PM WWW   Вверх
fish9370
Дата 11.3.2011, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 15.4.2007
Где: Москва

Репутация: 2
Всего: 1



Цитата(mes @  11.3.2011,  15:36 Найти цитируемый пост)
не стоит менять контекст в котором говорилось про "не нужно"..


выражение "не нужно" само за себя не говорит - я его понял именно так.. 
и все время так и понимал, а причем здесь pthread_cancel() это не ко мне..


--------------------
undefined
PM MAIL WWW ICQ   Вверх
mes
Дата 11.3.2011, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(boostcoder @  11.3.2011,  14:38 Найти цитируемый пост)
сейчас тему создам

а я уж чуть прям здесь не ответил smile

Добавлено через 3 минуты и 58 секунд
Цитата(fish9370 @  11.3.2011,  14:40 Найти цитируемый пост)
выражение "не нужно" само за себя не говорит - я его понял именно так.. 

не нужно имеет и второй смысл, более выраженный в том контексте "не _нужно_",т.е противопоставление вашему нужно.. и касалось не всей цитаты, а только выделенной ее части, в которой нужно относилось именно к  pthread_cancel().. 


Цитата(fish9370 @  11.3.2011,  14:40 Найти цитируемый пост)
 все время так и понимал, а причем здесь pthread_cancel() 

 smile, если б Вы вместо перехода на личности, попытались бы уточнить, то эта путаница решалась бы там же.. А так могу лишь посоветовать чужие выражения, не только со своей точки зрения.. 


--------------------
PM MAIL WWW   Вверх
MAKCim
Дата 12.3.2011, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



ребята, давайте спокойнее

я считаю так
если поток[и] используют ресурсы, которые надо _явно_ освобождать, то, естественно, вызов pthread_cancel(), как одно из решений, необходим
примеры ресурсов: классические ipc типа семафоров и shared memory, временные файлы и т. д.
все, что не входит в этот список, закрывается автоматически (когда выходим из main() и завершается основной процесс)

но, имхо, лучше стараться всегда завершать все явно, по-православному ;)
даже если утечек быть не может

Добавлено через 2 минуты и 42 секунды
Цитата(fish9370 @  11.3.2011,  15:22 Найти цитируемый пост)
no comments 

а что, как раз самое правильное решение, имхо


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.3016 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.