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

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

Войти
Регистрация
Восстановить пароль
 
Segaman
 Аватар для Segaman
2 / 2 / 1
Регистрация: 03.09.2014
Сообщений: 141
#1

Многопоточные функции - C++

13.01.2016, 13:02. Просмотров 173. Ответов 3
Метки нет (Все метки)

Написал программу, которая обрабатывает большой объём информации и столкнулся с проблемой производительности.
Начал копать в сторону многопоточности, но есть несколько вопросов, ответ на которые не просто найти.
Хочу спросить опытных программистов.
Я пишу программу на С++ для шиндовс.

1.Существуют ли какие-то запреты на чтение\запись данных нескольких потоков из одного места?
2.Если несколько потоков вызывают одну функцию, будут ли обьявленные в ней переменные создаваться отдельно для каждого потока или нет?

Я просто пришел из старых консолей, там с этим строго. А на компе не разу таким не промышлял.
Еще наткнулся на OpenMP.

3.Стоит ли мне, новичку, юзать эту плюшку или ограничиться CreateThread?
Заранее спасибо
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2016, 13:02     Многопоточные функции
Посмотрите здесь:

Многопоточные библиотеки C++
использование массива из функции в другой функции C++
Многопоточные консольные приложения C++
C++ Будут ли мои многопоточные решения кроссплатформенными?
C++ Не работают функции <math.h> в методе (функции-члене)
Применение переменных одной функции в другой функции C++
C++ Работа функции qsort - объяснить работу функции
C++ Перевести код из функции в шаблоны функции
Разница в работе созданной функции и основной функции C++
Многопоточные программы, распараллеливание при чтении файла C++
C++ Передача функции в качестве параметра функции
C++ Составить функции вычисления определённого интеграла от функции f(x)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12514 / 7076 / 794
Регистрация: 27.09.2012
Сообщений: 17,477
Записей в блоге: 2
Завершенные тесты: 1
13.01.2016, 13:05     Многопоточные функции #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Segaman Посмотреть сообщение
1.Существуют ли какие-то запреты на чтение\запись данных нескольких потоков из одного места?
По сути, запретов нет, это же Ваш процесс и Ваша память.
Но нужно следить за синхронизацией.
Цитата Сообщение от Segaman Посмотреть сообщение
2.Если несколько потоков вызывают одну функцию, будут ли обьявленные в ней переменные создаваться отдельно для каждого потока или нет?
У каждого потока свой стек, так что стековые - будут.
Также есть thread_local переменные.
Цитата Сообщение от Segaman Посмотреть сообщение
3.Стоит ли мне, новичку, юзать эту плюшку или ограничиться CreateThread?
Может сразу взять компилятор поновее с поддержкой c++11 и использовать std::thread?
Ну или boost::thread.
Mesteriis
 Аватар для Mesteriis
371 / 154 / 40
Регистрация: 08.08.2015
Сообщений: 1,061
Завершенные тесты: 1
13.01.2016, 13:09     Многопоточные функции #3
Цитата Сообщение от Croessmah Посмотреть сообщение
std::thread?
Ну или boost::thread.
Кстати по этому поводу, как по твоему что лучше? или это по сути одно и тоже, так как из буста он приехал в STL?
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17185 / 5439 / 337
Регистрация: 30.03.2009
Сообщений: 14,744
Записей в блоге: 26
13.01.2016, 18:03     Многопоточные функции #4
Цитата Сообщение от Segaman Посмотреть сообщение
3.Стоит ли мне, новичку, юзать эту плюшку или ограничиться CreateThread?
Заранее спасибо
Если под плюшкой подразумевается OpenMP, а программа сравнительно простая, то стОит. Но надо при этом понимать, что если есть хотя бы базовые навыки по созданию потоков вручную (через CreateThread, а не boost::thread), то любая надстройка над потоками (те же boost::thread и OpenMP) будут пониматься намного глубже
Yandex
Объявления
13.01.2016, 18:03     Многопоточные функции
Ответ Создать тему
Опции темы

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