7 / 7 / 14
Регистрация: 18.10.2016
Сообщений: 46
1

Многопоточность

30.03.2018, 23:51. Показов 1116. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста, в чем собственно проблема?
Если применить boost::thread, то компилируется, но не выводится ничего, кроме перевода на новую строку 2 раза.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <thread>
using namespace std;
 
void fill_vect(vector<int> & v)
{
    v.reserve(10);
    for (int i = 0; i < 10; ++i)
    {
        v.push_back(rand() % 20);
    }
}
 
void fill_str(string & s)
{
    s = "Hello world";
}
 
int main()
{
    vector<int> v;
    string str;
    thread t1(fill_vect, v);
    thread t2(fill_str, str);
    for_each(v.begin(), v.end(), [&](int item) {cout << item << ' '; });
    cout << endl << str << endl;
}
Миниатюры
Многопоточность  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2018, 23:51
Ответы с готовыми решениями:

Многопоточность в C++ и C++11
как я понял, многопоточность появилась в С++11 cтандарте. Почитал что его вроде как visual studio...

Многопоточность
Есть задание: Написать и протестировать функцию, которая находит в массиве минимальный по модулю...

Многопоточность С++
Добрый вечер! написал вот такую программку. std::vector&lt;std::thread&gt; threads;...

Многопоточность c++
Добрый день! Я только начинаю изучать многозадачность в c++ и у меня возник вопрос о том как...

3
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
31.03.2018, 00:03 2
Лучший ответ Сообщение было отмечено art_h4rd как решение

Решение

C++
1
2
3
4
    thread t1(fill_vect, ref(v));
    thread t2(fill_str, ref(str));
    t1.join();
    t2.join();
1
7 / 7 / 14
Регистрация: 18.10.2016
Сообщений: 46
31.03.2018, 00:07  [ТС] 3
nd2, Спасибо, заработало. Подскажи пожалуйста или кинь ссылку на источник, почему это исправляет ситуацию в данном случае, если не сложно.
0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
31.03.2018, 00:11 4
Лучший ответ Сообщение было отмечено art_h4rd как решение

Решение

Заметки
Аргументы функции потока копируются по значению. Если ссылочный аргумент должен быть передан функции потока, он должен быть обернут (например, с std::ref или std::cref).

Любое возвращаемое значение функции игнорируется. Если функция генерирует исключение, вызывается std::terminate. Используйте std::promise или std::async для проброса возвращаемых значений и исключений в вызывающий поток.
http://ru.cppreference.com/w/c... ead/thread
1
31.03.2018, 00:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2018, 00:11
Помогаю со студенческими работами здесь

Многопоточность
Не особо понимаю мнопоточность в с++. Есть задание типа.... Сделать программу, иммитирующую работу...

Многопоточность
При добавлении больше 10000 элементов в таблицу на форму форма зависает, как это исправить?...

Многопоточность в С++
Добрый день! Если я создам экземпляр класса в одном потоке и начну одновременно из нескольких...

Многопоточность
Здраствуйте! Объясните пожалуйста понятными словами что такое многопоточность и для чего она нужна?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru