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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
jr_
60 / 60 / 17
Регистрация: 14.06.2016
Сообщений: 219
Завершенные тесты: 3
#1

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

05.10.2016, 08:38. Просмотров 233. Ответов 8
Метки нет (Все метки)

С помощью 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".
Как правильно отцепить поток из другого потока?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2016, 08:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Abort has been called при создании потока (C++):

R6010 -abort() has been called - C++
Есть код: task_for_thread: void task_for_thread(const size_t idThread) { while (done.value == 1) {} // пусть крутятся тут...

Вылетает : R6010 - abort() has been called - C++
Написал программу которая перемножает 2 очень больших матрицы. На мелких она работает. То есть 10000 на 10000 умножает без проблем. ...

Debug Error! R6010 - abort() has been called - C++
Помогите исправить ошибку #include <iostream> #include <fstream> using namespace std; int main(int argc, char * argv) { ...

Ошибка при создании потока - C++
Почему возникает ошибка: 1>c:\users\егор\desktop\fun_to__\fun_to__\fun+\dir\mainfile.h(17) : error C2664: _beginthread: невозможно...

Ошибка при создании потока std::thread - C++
Внутри класса есть функция void move(); Нужно, чтобы она работала в отдельном потоке. Проблема : неправильно указываю параметры....

Std::mutex выдает исключение abort() при попытки unlock() - C++
до создания потока блокирую mutex, создаю поток и опять блокирую mutex, поток снимает блок и мы едем дальше, но выкидывает исключение... ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
nmcf
5310 / 4630 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
05.10.2016, 09:33 #2
Что за this и почему не предусмотрено завершение?
jr_
60 / 60 / 17
Регистрация: 14.06.2016
Сообщений: 219
Завершенные тесты: 3
05.10.2016, 12:16  [ТС] #3
C++
1
2
3
4
__declspec(dllexport) int Initialize(int hostPid) {
        Engine::Instance().StartWorking(hostPid);
        return 0;
}
Tick - метод инстанса этого самого Engine, поэтому захватываю this.

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

Ошибка при выполнении запроса к mysql (terminate called after throwing an instance of 'sql::SQLException') - C++
Всем привет. Пишу программу - демон, выполняющую изменения в базе данных в случае появления определённых флагов. Использую MYSQL...

Ошибка при повторном запуске: terminate called after throwing an instance of 'std::ios_base::failure' - C++
Здравствуйте, вот этот кусок кода(дан ниже) при повторном запуске программы выдает ошибку: terminate called after throwing an instance of...

функция abort() - C++
тестирую сигнал SIGABRT который генерируется функцией abort() функция abort() дает сбой debug error! см. вложение. среда MVStudio...

Метод Abort для потока крашит приложение - C#
довольно странная проблема: при аборте потока студия завершает работу приложения, ничего не спросив. сам потоковый метод: ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
05.10.2016, 13:17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru