Форум программистов, компьютерный форум CyberForum.ru

Ошибка создания потока - C++

Восстановить пароль Регистрация
 
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
18.04.2014, 18:39     Ошибка создания потока #1
Создание потока
C++
1
2
3
4
5
6
7
8
9
10
11
 if (!Running){
            try{
                    _Running = true;
                    NMClient client;
                    iret = pthread_create(&_ThreadRunClient, NULL, NMClient::Run_Client_Helper, this);
 
                }catch (exception& e){
                    _Running = false;
                    throw std::invalid_argument("Невозможно запустить клиент");
                }
        }
Код компилируется норм. в IDE начал отладку, чтобы посмотреть что там делается, а при создании потока ИДЕ выдает такое:

Сигнал перехвачен

Получен сигнал: SIGPIPE (Broken pipe)
Для программы cppapplication_1, PID 15*194

Можно игнорировать сигнал или переслать его, либо продолжить или приостановить процесс
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
18.04.2014, 18:47     Ошибка создания потока #2
ну чтобы игнорировать сигнал надо просто назначить ему пустой обработчик - по дефолту сигналы завершают программу... если вопрос об этом...
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
18.04.2014, 18:48  [ТС]     Ошибка создания потока #3
как назначить пустой обработчик?
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
18.04.2014, 18:50     Ошибка создания потока #4
http://www.cplusplus.com/reference/csignal/signal/
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
18.04.2014, 18:52  [ТС]     Ошибка создания потока #5
просто не пойму как применить это к строке создания потока
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
18.04.2014, 18:58     Ошибка создания потока #6
Цитата Сообщение от diplomat1129 Посмотреть сообщение
как применить это к строке создания потока
никак. это функция, которую нужно вызвать где-нибудь выше генерации сигнала, после чего обработчик будет назначен и сигналы, полученные позже будут обрабатываться им... Не понятно ещё зачем сигналы используются при создании потоков - обычно они нужны в многопроцессной а не многопоточной архитектуре...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2014, 15:46     Ошибка создания потока
Еще ссылки по теме:

C++ Измерить время создания и последующего уничтожения (TerminateTread) не приостановленного потока,
Ошибка при создании потока std::thread C++
Ошибка потока ввода C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
21.04.2014, 15:46  [ТС]     Ошибка создания потока #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    void RunClient(){
 
        int iret;
        void (*prev_handler)(int);
 
        prev_handler = signal (SIGINT, my_handler);
        
        if (!Running){
            try{
                    _Running = true;
                    NMClient client;
                    iret = pthread_create(&_ThreadRunClient, NULL, NMClient::Run_Client_Helper, this);
              (1)
                }catch (exception& e){
                    _Running = false;
                    throw std::invalid_argument("Невозможно запустить клиент");
                }
        }
        else{
            throw std::invalid_argument("Клиент уже остановлен");
        }
    }
вставил обработчик сигнала..теперь почему-то при отладке отладчик сразу прыгает на строку (1).т.е. перепрыгивает все. и все равно выкидывает ту же ошибку про сигнал что писал выше

Добавлено через 1 час 53 минуты
C++
1
2
3
4
5
  void my_handler (int param)
        {
          signaled = 1;
        }
sig_atomic_t signaled = 0;
сам обработчик

Добавлено через 2 часа 50 минут
Сигнал все равно выскакивает и мешает отладке. Так не должно быть насколько я понимаю
Yandex
Объявления
21.04.2014, 15:46     Ошибка создания потока
Ответ Создать тему
Опции темы

Текущее время: 07:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru