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

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

Восстановить пароль Регистрация
 
Segaman
 Аватар для Segaman
2 / 2 / 1
Регистрация: 03.09.2014
Сообщений: 141
13.01.2016, 13:02     Многопоточные функции #1
Написал программу, которая обрабатывает большой объём информации и столкнулся с проблемой производительности.
Начал копать в сторону многопоточности, но есть несколько вопросов, ответ на которые не просто найти.
Хочу спросить опытных программистов.
Я пишу программу на С++ для шиндовс.

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

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

3.Стоит ли мне, новичку, юзать эту плюшку или ограничиться CreateThread?
Заранее спасибо
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11840 / 6819 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 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,059
Завершенные тесты: 1
13.01.2016, 13:09     Многопоточные функции #3
Цитата Сообщение от Croessmah Посмотреть сообщение
std::thread?
Ну или boost::thread.
Кстати по этому поводу, как по твоему что лучше? или это по сути одно и тоже, так как из буста он приехал в STL?
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,135
Записей в блоге: 26
13.01.2016, 18:03     Многопоточные функции #4
Цитата Сообщение от Segaman Посмотреть сообщение
3.Стоит ли мне, новичку, юзать эту плюшку или ограничиться CreateThread?
Заранее спасибо
Если под плюшкой подразумевается OpenMP, а программа сравнительно простая, то стОит. Но надо при этом понимать, что если есть хотя бы базовые навыки по созданию потоков вручную (через CreateThread, а не boost::thread), то любая надстройка над потоками (те же boost::thread и OpenMP) будут пониматься намного глубже
Yandex
Объявления
13.01.2016, 18:03     Многопоточные функции
Ответ Создать тему
Опции темы

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