Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 69, средняя оценка - 4.67
septe-mber
0 / 0 / 0
Регистрация: 02.01.2013
Сообщений: 123
#1

Многопоточность в C++11. std::thread - C++

02.04.2014, 02:54. Просмотров 14516. Ответов 20
Метки нет (Все метки)

Привет всем! использую таким образом многопоточность

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class A
{
public:
    void fun()
    {
 
    }
};
int main(int argc, char *argv[])
{
A p;
    std::thread th(p);
    th.join();
}
компилятор выдает ошибку ...

объясните пожалуйста, что делаю не так ? ( в многопоточности новичок )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2014, 02:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Многопоточность в C++11. std::thread (C++):

Std::thread автоматическая многопоточность - C++
Есть данный пример создания массива thread и инициализации его в цикле. #include<iostream> #include<sstream> #include<thread> ...

Использование std::function в std::thread - C++
Нужно вызвать function fnc в новом потоке. Как сделать? function <void(vector<char>)> fnc; void test(vector<char> data) { for...

Ошибка компиляции "no instance of constructor 'std::thread::thread' matches the argument list" - C++
Не могу сообразить почему возникает ошибка. У меня в классе есть метод, который должен работать в нескольких потоках одновременно. Вот он: ...

Boost::thread vs std::thread - C++
Доброго времени суток, решил углубить свои знания, и решил почитать про потоки, бустовые и те что в 11 стандарте приняли, с бустом все ясно...

std::thread - C++
Возник вопрос: как создать массив потоков (точнее, как его инициализировать). То есть, мне нужно примерно такое: std::thread...

Указатели и std::thread - C++
Всем здрасьте ! Возникла проблема в понимании ... Возможно я написал не в ту тему, но думаю тут есть эксперты. У меня есть класс...

20
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.04.2014, 17:39 #16
Цитата Сообщение от stima Посмотреть сообщение
код оптимизируеться во втором нет.
Почему? Как сделать, чтобы оптимизировался в двух случаях? Или чтобы в первом не оптимизировался?
0
stima
490 / 342 / 40
Регистрация: 22.03.2011
Сообщений: 1,095
Завершенные тесты: 2
02.04.2014, 17:43 #17
Пруф

g++ -c test.cpp -std=c++11
objdump -d test.o
0
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.04.2014, 17:56 #18
Это чтобы что?
0
stima
490 / 342 / 40
Регистрация: 22.03.2011
Сообщений: 1,095
Завершенные тесты: 2
02.04.2014, 17:58 #19
1. Компиляторы давно научились выкидывать "пустые циклы" или не использованный код, а также делать некоторые расчеты в период компиляции (что привело к появлению constexpr)
2, 3. Этого я Вам не подскажу.

Также учтите время на обработку кода "синхронизации/локов/захвата потоков и т.д."

Добавлено через 1 минуту
п.с. Это чтобы дизассемблировать, и посмотреть происходит оптимизация и какой код еще "появился"
1
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.04.2014, 18:07 #20
Цитата Сообщение от stima Посмотреть сообщение
1. Компиляторы давно научились выкидывать "пустые циклы" или не использованный код, а также делать некоторые расчеты в период компиляции (что привело к появлению constexpr)
Почему, когда несколько потоков, это не делается?
0
stima
490 / 342 / 40
Регистрация: 22.03.2011
Сообщений: 1,095
Завершенные тесты: 2
02.04.2014, 18:19 #21
Конкретно я Вам не отвечу, я пока отложил "Книгу драконов" и иже с ней, могу только порасуждать "как бы сделал я".
Если Вас интересует конкртеный ответ, углубляйтесь в сторону разработки компиляторов, а имеено части оптимизации кода.

p.s. На самом деле, я думаю (псоле внимательного просмотра асс листинга), что не оптимизация играет ключевую роль, а именно накладные расходы использование потоков. Это можно протестить увеличив количество вызовов функций и посмотреть, если при увеличении количества вызовов время в немногопоточной среде увеличивается не много, то это оптимизация иначе расходы на многопоточность.
1
02.04.2014, 18:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2014, 18:19
Привет! Вот еще темы с ответами:

Std::thread в классе - C++
Всем привет есть код #include<thread> #include<iostream> class SomeClass { public : SomeClass(); ...

Std::thread::detach() - C++
Что произойдет, если main - поток завершится раньше чем child.detach()? Добавлено через 3 минуты У меня программа просто завершилась...

Запутался с std::thread в классе - C++
Гуру, помогите новичку! Учусь кодить в потоках! Немного разообрался. Теперь задача - "завернуть" поток в отдельный класс (внешний...

Std::thread приостановка потока - C++
Есть прога в C++ Builder. Три функции описаные внизу запускаются в трех разных потоках. Первый поток генерирует данные для для двух других,...


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Опции темы

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