С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 06.07.2008
Сообщений: 32
1

Как правильно вызвать поток в консольной программе

01.11.2014, 15:20. Показов 2525. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всё! Совсем завяз, уже создал пустой проект, чтобы разобраться с этими потоками. Гугл уже снится, но там, похоже, у всех всё работает, а у меня нет. Вот проект упрощен до минимума.

файл.pro

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
QT += core
QT -= gui
 
TARGET = Probka
 
CONFIG += console
CONFIG += c++ -std=c++11 -pthread file.cpp
 
TEMPLATE = app
 
SOURCES += main.cpp
файл.срр

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <QCoreApplication>
include <iostream>
include <thread>
 
void do_stuff()
{
//std::cout << "doing something...\n";
}
 
int main()
{/*/
std::thread t1(do_stuff);
do_stuff();
t1.join();//*/
return 0;
}
Но от ошибки так и не могу избавиться, уже ткните носом - в чем моя ошибка?
C
1
#error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.11.2014, 15:20
Ответы с готовыми решениями:

Правильно вызвать поток
Вызываю поток следующим образом repeat for Thread3:=0 to form3.sSpinEdit1.Value do begin ...

Как на VC ++ в консольной программе узнать ...
Как на VC ++ в консольной программе узнать, существует ли такая - то папка (или файл)?

Как работать с реестром в консольной программе?
как работать с реестром в консольное программе с http ини файлами и прочем?

Как подключить dll к консольной программе в Dev-CPP ?
Здравствуйте. Написал библиотеку в Qt Creator. Подключаю её к консольной программе, написанной в...

24
шКодер самоучка
2282 / 1958 / 945
Регистрация: 09.10.2013
Сообщений: 4,386
Записей в блоге: 3
01.11.2014, 15:37 2
Лучший ответ Сообщение было отмечено Димитрий как решение

Решение

Димитрий, Вы не в ту строку добавляете параметры компилятора
Bash
1
2
3
4
5
6
7
8
9
10
11
12
QT += core
QT -= gui
 
QMAKE_CXXFLAGS += -std=c++11 -pthread
 
TARGET = Probka
CONFIG += console
#CONFIG += c++ -std=c++11 -pthread file.cpp
 
TEMPLATE = app
 
SOURCES += main.cpp
1
0 / 0 / 0
Регистрация: 06.07.2008
Сообщений: 32
01.11.2014, 16:34  [ТС] 3
Спасибо, надо было раньше обратиться за помощью, всё равно информации, как правильно настроить компилятор для многопоточных приложений почти нет.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
01.11.2014, 17:29 4
Димитрий, потому что нет понятия настройка компилятора для монгопоточных приложений.
0
0 / 0 / 0
Регистрация: 06.07.2008
Сообщений: 32
02.11.2014, 10:58  [ТС] 5
Да, вообще - по настройке компилятора почти вся инфа для особо продвинутых, для навичков - минимум.
0
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
02.11.2014, 11:09 6
Цитата Сообщение от Димитрий Посмотреть сообщение
по настройке компилятора
А что вы там настраивать собрались? Он и из коробки нормально работает.
0
232 / 232 / 69
Регистрация: 30.09.2012
Сообщений: 545
02.11.2014, 11:19 7
В про файле для поддержки с++11 хватает просто

C++ (Qt)
1
CONFIG += c++11
разве нет?
0
0 / 0 / 0
Регистрация: 06.07.2008
Сообщений: 32
04.11.2014, 13:36  [ТС] 8
Цитата Сообщение от RazrFalcon Посмотреть сообщение
Сообщение от Димитрий
по настройке компилятора
А что вы там настраивать собрались? Он и из коробки нормально работает.
А библиотеки вы где подключать собираетесь (пути к либам)? А как в моём случае многопоточность? Знаете, сколько пришлось перелапатить, чтобы понять, что надо добавить что-то в про-файл. И ни в одном учебнике ни строчки, просто дабавьте через инклуде заголовочный файл и работайте, а что кампилятор настроить надо ...

Цитата Сообщение от Chernobyl Посмотреть сообщение
В про файле для поддержки с++11 хватает просто
Код C++ (QT)
1
CONFIG += c++11
разве нет?
Нет, иначе бы не спрашивал тут: как и что.
0
8 / 6 / 1
Регистрация: 15.12.2011
Сообщений: 59
04.11.2014, 15:13 9
Версия Qt какая?
Если 5, то надо:
C++
1
CONFIG += c++11
если 4, то:
C++
1
QMAKE_CXXFLAGS += -std=c++11
Кроме того, зачем вы пишете на Qt, если собираетесь использовать потоки C++ 11? Рекомендую или все писать на C++ 11, или использовать средства многопоточности Qt.
0
0 / 0 / 0
Регистрация: 06.07.2008
Сообщений: 32
04.11.2014, 15:42  [ТС] 10
Цитата Сообщение от UndeadBlow Посмотреть сообщение
Рекомендую или все писать на C++ 11, или использовать средства многопоточности Qt.
Программировал в борланде С++6, чтобы писать кросплатформенные программки и использовать библиотеку Opencv, решил перейти на Qt. Пытаюсь освоить уже с месяц. Обьясните поподробней вашу рекомендацию. Как можно использовать многопоточность средствами С++, не используя средства Qt ?
0
8 / 6 / 1
Регистрация: 15.12.2011
Сообщений: 59
04.11.2014, 16:26 11
Лучший ответ Сообщение было отмечено Димитрий как решение

Решение

Цитата Сообщение от Димитрий Посмотреть сообщение
Программировал в борланде С++6, чтобы писать кросплатформенные программки и использовать библиотеку Opencv, решил перейти на Qt. Пытаюсь освоить уже с месяц. Обьясните поподробней вашу рекомендацию. Как можно использовать многопоточность средствами С++, не используя средства Qt ?
Чтобы писать кросс-платформенные программки без GUI, как у вас в примере в шапке темы, достаточно писать используя STL С++ 11, потому что C++ 11, по сути, поддерживают все компиляторы на всех операционных системах лишь с маленькими различиями. Код С++ - платформонезависимый код по определению, пока вы не используете что-то зависящее от ОС, например WinApi и работу с реестром или платформозависимые фреймворки.
Если же вы хотите писать именно графические приложения, то Qt имеет свои средства многопоточности. Можно и C++ 11, как удобнее, все зависит от проектирования и желания.

Итак, чтобы четко понять - у вас три варианта реализовать многопоточность, и все 3 варианта кросс-платформенные:
1. Использовать потоки С++ 11 (надо включить в .pro файл поддержку нового стандарта, как - я написал выше. По умолчанию он выключен, а в старом стандарте нет поддержки потоков на уровне C++ STL, только OpenMP из пункта 3!).
2. Использовать потоки библиотеки Qt, ничего дополнительного в .pro файл не надо, только в заголовочные.
3. Использовать OpenMP. OpenMP - набор макросов для работы с потоками и поддерживается С++ по умолчанию уже с С++ 99, посему OpenMP будет везде и ничего, опять же, в .pro файл писать не нужно, и даже заголовочные файлы не нужны.
1
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
04.11.2014, 19:00 12
Цитата Сообщение от UndeadBlow Посмотреть сообщение
потому что C++ 11, по сути, поддерживают все компиляторы на всех операционных системах лишь с маленькими различиями
У человека может и не быть компилятора поддерживающий нужную фичу из C++11. Это актуальная проблема для серверных решений на базе GNU/Linix

Про OpenMP то же обман:
1. Существует куча версий OpenMP и их поддержка различается от поставщика компилятора и версии компилятора
2. Нужен дополнительный ключ компилятора -fopenmp(GCC), /openmp(Visual C++)
1
8 / 6 / 1
Регистрация: 15.12.2011
Сообщений: 59
04.11.2014, 19:14 13
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
У человека может и не быть компилятора поддерживающий нужную фичу из C++11. Это актуальная проблема для серверных решений на базе GNU/Linix
Про OpenMP то же обман:
1. Существует куча версий OpenMP и их поддержка различается от поставщика компилятора и версии компилятора
2. Нужен дополнительный ключ компилятора -fopenmp(GCC), /openmp(Visual C++)
Есть компилятор, который поддерживает С++ 11, но не поддерживает потоки? Я тоже люблю занудничать, но автору темы явно пока не нужно знать это, у него проблемы другого уровня. К тому же из контекста очевидно, что он прогает с винды, VS13 ему все нужное даст.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
04.11.2014, 19:24 14
UndeadBlow, C++0x/C++11 Support in GCC.
Из контекста ясно, что у него компилятор GCC, а не VS. VS13 не даст OpenMP 3/4.
0
8 / 6 / 1
Регистрация: 15.12.2011
Сообщений: 59
04.11.2014, 19:58 15
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
UndeadBlow, C++0x/C++11 Support in GCC.
Из контекста ясно, что у него компилятор GCC, а не VS. VS13 не даст OpenMP 3/4.
У них все документировано связанное с OpenMP и никаких проблем не должно возникнуть. 3/4, это вы как так подсчитали точно?
В любом случае, я просто перечислил доступные инструменты. Мешать STL и Tulip не лучший тон.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
04.11.2014, 23:07 16
OpenMP в Visual C++ ясно сказано стандарт 2.0
Стандарты OpenMP
Поддержка OpenMP в GCC

Цитата Сообщение от UndeadBlow Посмотреть сообщение
Мешать STL и Tulip не лучший тон.
STL это Standard Template Library, а не стандартная библиотека С/C++. Почему нельзя взять самое лучшее из различных реализаций? Пока не встречал таких рекомендаций от авторитетов в C++.
0
8 / 6 / 1
Регистрация: 15.12.2011
Сообщений: 59
04.11.2014, 23:21 17
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
STL это Standard Template Library, а не стандартная библиотека С/C++. Почему нельзя взять самое лучшее из различных реализаций? Пока не встречал таких рекомендаций от авторитетов в C++.
Это мое личное мнение, потому что при смешении типов возникает путаница и возможные незаметные баги. Например вот из нашего проекта строка, которая мне не нравится совсем:
Код
this->_key_sha512 = QString::fromStdString(sha512(key_.toStdString()));
Естественно, никакого криминала, но лучше сразу нормировать все типы данных в проекте. Это называется проектирование и подробнее про него вы можете узнать в книге "Совершенный код" (вы первый начали).
0
0 / 0 / 0
Регистрация: 06.07.2008
Сообщений: 32
05.11.2014, 15:39  [ТС] 18
Люди, давайте жить дружно. Почитал ваши топики, немного понял, но понял, что ещё осваивать много. Прочитал пару книжек по Qt, и почти освоил визуальное программирование. Сам язык знал, а вот где - какой кампилятор, какие настройки и для чего, лучше использовать - хотел бы почитать.
У меня
Qt Creator 3.0.1
Основан на Qt 5.2.1 (MSVC 2010, 32 бита)
и комплект
Desktop Qt 5.2.1 MinGW 32bit
с кампилятором
MinGW 4.8.3 32bit g++.hpp
в про-файле написано:
C
1
2
3
4
5
6
7
8
9
QT       += core
QT       -= gui
QMAKE_CXXFLAGS += -std=c++11 -std=gnu++11 -pthread
TARGET = cam4
CONFIG   += console
CONFIG   -= app_bundle
CONFIG   += -std=c++11
TEMPLATE = app
SOURCES += main.cpp
и подключаю библиотеки:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <stdio.h>
#include <thread>
 
 #include "opencv2/objdetect/objdetect.hpp"
 #include "opencv2/highgui/highgui.hpp"
 #include "opencv2/imgproc/imgproc.hpp"
 
//--------------------------------------------------------------------------------------------------------------
 using namespace std;
 using namespace cv;
Все кампилируется и работает, если есть что-то лишнее - скажите, или как сделать лучше. Хочу, чтобы прога работала и под линукс, и андройд, хотя на компе стоит виндовс.
Если знаете книги, что описывают данные вопросы, то хотелось бы почитать.

Включение #include <thread> без ключа в про-файле QMAKE_CXXFLAGS += -pthread даёт ошибку. Одно без другого не работает, хотя про это нигде не сказано. Думаю таких нюансов ещё будет много. Спасибо.
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
06.11.2014, 10:34 19
UndeadBlow, приведенный пример ни коем образом не относится к проектированию.
То что вы взяли функцию из сторонней библиотеки которая написана по стандартам(Стандарты программирования на С++) это вопрос к реализации, а не проектированию.
Результатом проектирования является модель объектная(или любая другая, в зависимости от выбранной парадигмы. Объектно-ориентированный анализ и проектирование с примерами приложений.)
0
8 / 6 / 1
Регистрация: 15.12.2011
Сообщений: 59
06.11.2014, 14:38 20
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
UndeadBlow, приведенный пример ни коем образом не относится к проектированию.
Приведенный пример напрямую относится к проектированию архитектуры программы, частью которого является определение используемых типов данных заранее
http://www.ozon.ru/context/detail/id/3159814/
1
06.11.2014, 14:38
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.11.2014, 14:38
Помогаю со студенческими работами здесь

WebBrowser в консольной программе
Доброго времени суток уважаемые! Искал решение в интернете, но внятного ответа не нашел......

Как завершить поток в программе
нужно завершить поток в программе который принимает синхронно подключение(acept()) Abort...

Посылка сообщения консольной программе
Вот пробовал переберать пароль к рар архиву и вот пишу так ShellExecute (Handle, nil,...

Горячие клавиши в консольной программе
Добрый день. У меня консольная программа под windos: в программе запущенны 2 патока. int...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Блоги программистов
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­хро­н­н­ы­й счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru