Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 23.07.2018
Сообщений: 11

Ошибка при работе с потоками

23.07.2018, 18:15. Показов 1065. Ответов 2

Студворк — интернет-сервис помощи студентам
Есть две функции: одна закидывает изображения в вектор, а вторая забирает их оттуда и обрабатывает. Разделил приложение на два потока, хочу чтобы функции работали параллельно, изображения не обрабатывались, когда вектор пустой,и функция
C++
1
void processingImages(vector <Mat> &vectorOfImages, Mutex& mutex)
ожидала наполнение вектора. Вроде, все работает, проверил дебагом, функция
C++
1
FindImage(ref(imageIn), ref(tamplateImageIn), ref(imageFound), ref(maxValue), pixelsToBeCovered)
возвращает то, что надо, проверил в консоли, после чего вылетает сообщение: abort() has been called.
Прошел дебагом по шагам, валится после завершения функции
C++
1
void processingImages(vector <Mat> &vectorOfImages, Mutex& mutex)
в файле xthread в месте

C++
1
2
3
4
5
6
7
8
9
10
11
private:
    static unsigned int __stdcall _Call_func(void *_Data)
        {   // entry point for new thread
        static_cast<_Pad *>(_Data)->_Go();
        return (0);
        }
 
    _Cnd_t _Cond;
    _Mtx_t _Mtx;
    bool _Started;
    };
Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
void readImages(vector <Mat> &vectorOfImages, Mutex& mutex)
{
    mutex.lock();
    Mat image;
    Mat tamplateImage;
    image = imread("image.bmp");
    tamplateImage = imread("tamplateImage.bmp");
    vectorOfImages.push_back(image);
    vectorOfImages.push_back(tamplateImage);
    mutex.unlock();
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void processingImages(vector <Mat> &vectorOfImages, Mutex& mutex)
{
        Mat imageFound;
        double maxValue;
        int pixelsToBeCovered = 30;
        mutex.lock();
        Mat imageIn = vectorOfImages[0];    
        Mat tamplateImageIn = vectorOfImages[1];
        vectorOfImages.erase(vectorOfImages.begin(), vectorOfImages.begin() + 2);
        FindImage(ref(imageIn), ref(tamplateImageIn), ref(imageFound), ref(maxValue), pixelsToBeCovered);
        mutex.unlock();
 
}
C++
1
2
3
4
5
6
7
void Threads()
{   
    vector < cv::Mat > vectorOfImages;
    Mutex mutex;
    thread threadReadImages(readImages, ref(vectorOfImages), ref(mutex));
    thread threadProcessingImages(processingImages, ref(vectorOfImages), ref(mutex));
}
C++
1
2
3
4
5
6
int main()
{
Threads();
system("pause");
return 0;
}
Миниатюры
Ошибка при работе с потоками  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.07.2018, 18:15
Ответы с готовыми решениями:

Ошибка при работе с потоками
void __fastcall TForm1::FormCreate(TObject *Sender) { haha *Thr = new haha(true); Thr-&gt;Priority=tpTimeCritical; Thr-&gt;Resume(); } ...

Ошибка доступа к памяти при работе с потоками
проблема в следующем в оконном приложении( среда разработки C++ Builder XE3) создаю при нажатии кнопки &quot;Run&quot; поток HANDLE...

Запуск DLL. При работе с потоками появляется ошибка "Access violation"
Здравствуйте, у меня вопрос. Я запускаю dll через консоль с помощью RUNDLL32.EXE В библиотеке описана функция ран, которая запускает...

2
0 / 0 / 0
Регистрация: 23.07.2018
Сообщений: 11
23.07.2018, 18:36  [ТС]
При работе с потоками вылетает ошибка, описанная ниже, даже при функциях без параметров. В чем может быть проблема?

C++
1
2
3
4
void func1 ()
 {
 
}
C++
1
2
3
4
void Threads()
{
thread thread(func1);
}
C++
1
2
3
4
5
int main()
{
Threads();
return 0;
}
Миниатюры
Ошибка при работе с потоками  
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
23.07.2018, 19:14
Цитата Сообщение от Alex_Ogurtsov Посмотреть сообщение
В чем может быть проблема?
В том, что вызывается деструктор joinable-треда.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.07.2018, 19:14
Помогаю со студенческими работами здесь

Ошибка при работе с потоками ввода (вывода) в файл (из файла)
Изучаю перегрузку операторов ввода/вывода с файлом и без. Вылетает такая ошибка при отработанном коде: Необработанное исключение по...

Ошибки при работе с потоками Thread в c++
Здравствуйте, есть программа, совсем простая: #include &lt;iostream&gt; #include &lt;thread&gt; void threadFunction() { // do smth ...

Ошибка при работе с потоками
Пишу программу которая меняет обои рабочего стола , и вот код программы using System; using System.Collections.Generic; using...

Ошибка при работе с потоками
Проблема в том что , сколько я указал потоков столько программа проходит строк . Типо : 50 потоков = 50 строк как это исправить? ...

Ошибка в коде при работе с потоками
Всем доброго времени суток! Не могли бы вы подсказать, почему вот такая ошибка выходит при компиляции: Error 1 Only assignment, call,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru