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

Abort has been called при создании потока - C++

Восстановить пароль Регистрация
 
jr_
9 / 9 / 2
Регистрация: 14.06.2016
Сообщений: 76
Завершенные тесты: 3
05.10.2016, 08:38     Abort has been called при создании потока #1
С помощью CreateRemoteThread запускаю новый поток, в котором примерно следующее:
C++
1
2
3
4
5
6
7
_mainLoop = std::thread([this]() {
            for (;;) {
                Tick();
                std::this_thread::sleep_for(std::chrono::milliseconds(10));
            }
        }); 
_mainLoop.detach();
получаю: "abort has been called".
Как правильно отцепить поток из другого потока?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4278 / 3709 / 1246
Регистрация: 14.04.2014
Сообщений: 14,503
05.10.2016, 09:33     Abort has been called при создании потока #2
Что за this и почему не предусмотрено завершение?
jr_
9 / 9 / 2
Регистрация: 14.06.2016
Сообщений: 76
Завершенные тесты: 3
05.10.2016, 12:16  [ТС]     Abort has been called при создании потока #3
C++
1
2
3
4
__declspec(dllexport) int Initialize(int hostPid) {
        Engine::Instance().StartWorking(hostPid);
        return 0;
}
Tick - метод инстанса этого самого Engine, поэтому захватываю this.

Ну а завершение не предусмотрено, потому что фоновый поток должен работать на протяжении всей жизни программы.
ture
 Аватар для ture
404 / 297 / 120
Регистрация: 27.11.2014
Сообщений: 1,004
05.10.2016, 12:38     Abort has been called при создании потока #4
jr_, главный процесс завершился и все потоки ось валит до кучи к нему.
jr_
9 / 9 / 2
Регистрация: 14.06.2016
Сообщений: 76
Завершенные тесты: 3
05.10.2016, 12:39  [ТС]     Abort has been called при создании потока #5
Цитата Сообщение от ture Посмотреть сообщение
r_, главный процесс завершился и все потоки ось валит до кучи к нему.
процесс не завершается.
ture
 Аватар для ture
404 / 297 / 120
Регистрация: 27.11.2014
Сообщений: 1,004
05.10.2016, 12:43     Abort has been called при создании потока #6
C++
1
2
3
4
    /*создаем экземпляр класса и он сразу запускает поток*/
    std::thread th1(hndl_func);
    th1.join();//присоединяем поток к основному потоку процесса, т.е. ждем завершения
    //th1.detach();//можно сообщить потоку, что после завершения не ждал присоединения
jr_
9 / 9 / 2
Регистрация: 14.06.2016
Сообщений: 76
Завершенные тесты: 3
05.10.2016, 12:54  [ТС]     Abort has been called при создании потока #7
Так я именно так и делаю, или нет?
ture
 Аватар для ture
404 / 297 / 120
Регистрация: 27.11.2014
Сообщений: 1,004
05.10.2016, 13:02     Abort has been called при создании потока #8
jr_, эх думал быстро отделаться...
Я вижу, что поток имеет доступ к членам класса и не знаю, что делает Tick(). Но ясно, что поток запускается о с чем-то обламывается в процессе. Может раздельный доступ? Впрочем врядли...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.10.2016, 13:17     Abort has been called при создании потока
Еще ссылки по теме:

Ошибка при повторном запуске: terminate called after throwing an instance of 'std::ios_base::failure' C++
C++ Std::mutex выдает исключение abort() при попытки unlock()
C++ R6010 -abort() has been called

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

Или воспользуйтесь поиском по форуму:
jr_
9 / 9 / 2
Регистрация: 14.06.2016
Сообщений: 76
Завершенные тесты: 3
05.10.2016, 13:17  [ТС]     Abort has been called при создании потока #9
проблема решилась сама собой, как - непонятно
Yandex
Объявления
05.10.2016, 13:17     Abort has been called при создании потока
Ответ Создать тему
Опции темы

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