0 / 0 / 0
Регистрация: 06.07.2008
Сообщений: 32
|
||||||||||||||||
1 | ||||||||||||||||
Как правильно вызвать поток в консольной программе01.11.2014, 15:20. Показов 2512. Ответов 24
Метки нет (Все метки)
Всё! Совсем завяз, уже создал пустой проект, чтобы разобраться с этими потоками. Гугл уже снится, но там, похоже, у всех всё работает, а у меня нет. Вот проект упрощен до минимума.
файл.pro
0
|
01.11.2014, 15:20 | |
Ответы с готовыми решениями:
24
Правильно вызвать поток Как на VC ++ в консольной программе узнать ... Как работать с реестром в консольной программе? Как подключить dll к консольной программе в Dev-CPP ? |
шКодер самоучка
|
||||||
01.11.2014, 15:37 | 2 | |||||
Сообщение было отмечено Димитрий как решение
Решение
Димитрий, Вы не в ту строку добавляете параметры компилятора
1
|
0 / 0 / 0
Регистрация: 06.07.2008
Сообщений: 32
|
|
01.11.2014, 16:34 [ТС] | 3 |
Спасибо, надо было раньше обратиться за помощью, всё равно информации, как правильно настроить компилятор для многопоточных приложений почти нет.
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 хватает просто
0
|
0 / 0 / 0
Регистрация: 06.07.2008
Сообщений: 32
|
|
04.11.2014, 13:36 [ТС] | 8 |
А библиотеки вы где подключать собираетесь (пути к либам)? А как в моём случае многопоточность? Знаете, сколько пришлось перелапатить, чтобы понять, что надо добавить что-то в про-файл. И ни в одном учебнике ни строчки, просто дабавьте через инклуде заголовочный файл и работайте, а что кампилятор настроить надо ...
Нет, иначе бы не спрашивал тут: как и что.
0
|
8 / 6 / 1
Регистрация: 15.12.2011
Сообщений: 59
|
|||||||||||
04.11.2014, 15:13 | 9 | ||||||||||
Версия Qt какая?
Если 5, то надо:
0
|
0 / 0 / 0
Регистрация: 06.07.2008
Сообщений: 32
|
|
04.11.2014, 15:42 [ТС] | 10 |
Программировал в борланде С++6, чтобы писать кросплатформенные программки и использовать библиотеку Opencv, решил перейти на Qt. Пытаюсь освоить уже с месяц. Обьясните поподробней вашу рекомендацию. Как можно использовать многопоточность средствами С++, не используя средства Qt ?
0
|
8 / 6 / 1
Регистрация: 15.12.2011
Сообщений: 59
|
|
04.11.2014, 16:26 | 11 |
Сообщение было отмечено Димитрий как решение
Решение
Чтобы писать кросс-платформенные программки без 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
|
04.11.2014, 19:00 | 12 |
У человека может и не быть компилятора поддерживающий нужную фичу из 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 |
Есть компилятор, который поддерживает С++ 11, но не поддерживает потоки? Я тоже люблю занудничать, но автору темы явно пока не нужно знать это, у него проблемы другого уровня. К тому же из контекста очевидно, что он прогает с винды, VS13 ему все нужное даст.
0
|
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 |
У них все документировано связанное с OpenMP и никаких проблем не должно возникнуть. 3/4, это вы как так подсчитали точно?
В любом случае, я просто перечислил доступные инструменты. Мешать STL и Tulip не лучший тон.
0
|
04.11.2014, 23:07 | 16 |
OpenMP в Visual C++ ясно сказано стандарт 2.0
Стандарты OpenMP Поддержка OpenMP в GCC STL это Standard Template Library, а не стандартная библиотека С/C++. Почему нельзя взять самое лучшее из различных реализаций? Пока не встречал таких рекомендаций от авторитетов в C++.
0
|
8 / 6 / 1
Регистрация: 15.12.2011
Сообщений: 59
|
|
04.11.2014, 23:21 | 17 |
Это мое личное мнение, потому что при смешении типов возникает путаница и возможные незаметные баги. Например вот из нашего проекта строка, которая мне не нравится совсем:
Код
this->_key_sha512 = QString::fromStdString(sha512(key_.toStdString()));
0
|
0 / 0 / 0
Регистрация: 06.07.2008
Сообщений: 32
|
|||||||||||
05.11.2014, 15:39 [ТС] | 18 | ||||||||||
Люди, давайте жить дружно. Почитал ваши топики, немного понял, но понял, что ещё осваивать много. Прочитал пару книжек по Qt, и почти освоил визуальное программирование. Сам язык знал, а вот где - какой кампилятор, какие настройки и для чего, лучше использовать - хотел бы почитать.
У меня
Если знаете книги, что описывают данные вопросы, то хотелось бы почитать. Включение #include <thread> без ключа в про-файле QMAKE_CXXFLAGS += -pthread даёт ошибку. Одно без другого не работает, хотя про это нигде не сказано. Думаю таких нюансов ещё будет много. Спасибо.
0
|
06.11.2014, 10:34 | 19 |
UndeadBlow, приведенный пример ни коем образом не относится к проектированию.
То что вы взяли функцию из сторонней библиотеки которая написана по стандартам(Стандарты программирования на С++) это вопрос к реализации, а не проектированию. Результатом проектирования является модель объектная(или любая другая, в зависимости от выбранной парадигмы. Объектно-ориентированный анализ и проектирование с примерами приложений.)
0
|
8 / 6 / 1
Регистрация: 15.12.2011
Сообщений: 59
|
|
06.11.2014, 14:38 | 20 |
Приведенный пример напрямую относится к проектированию архитектуры программы, частью которого является определение используемых типов данных заранее
http://www.ozon.ru/context/detail/id/3159814/
1
|
06.11.2014, 14:38 | |
06.11.2014, 14:38 | |
Помогаю со студенческими работами здесь
20
WebBrowser в консольной программе Как завершить поток в программе Посылка сообщения консольной программе Горячие клавиши в консольной программе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |