-1 / 1 / 0
Регистрация: 24.12.2018
Сообщений: 124
|
||||||||||||||||
1 | ||||||||||||||||
Передача функторов в поток24.09.2020, 19:12. Показов 2163. Ответов 16
В классе создан вектор указателей на функторы.
Я хочу запустить все функторы в отдельных потоках - см. функцию func(). Какой должен быть синтаксис, чтобы это сделать?
0
|
24.09.2020, 19:12 | |
Ответы с готовыми решениями:
16
Перегрузка функторов в STL Как создать вектор функторов Передача переменных в поток C++ 11 передача ссылки в поток thread |
Вездепух
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,076
|
|
24.09.2020, 19:16 | 2 |
Объявить
std::vector<std::thread> и в цикле делать push_back или emplace_back в него ваших потоков по одному.Разумеется, уничтожать std::thread до того, как завершится поток, не разрешается. Поэтому либо ждите завершения потока, либо позаботьтесь о правильном времени жизни объектов std::thread .
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
24.09.2020, 19:18 | 3 | |||||
0
|
Вездепух
11696 / 6375 / 1724
Регистрация: 18.10.2014
Сообщений: 16,076
|
|
24.09.2020, 19:19 | 4 |
Что такое
&MyClass::copyData[0] ? Первым параметром должен быть собственно функтор потока.
0
|
6105 / 3460 / 1406
Регистрация: 07.02.2019
Сообщений: 8,799
|
|
24.09.2020, 19:20 | 5 |
Зачем всё это?
Ваш функтор весит 1 байт, более того он вообще не захватывает никаких данных. Так же он не полиморфный.
1
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
24.09.2020, 19:23 | 6 | |||||
1
|
-1 / 1 / 0
Регистрация: 24.12.2018
Сообщений: 124
|
||||||
25.09.2020, 11:57 [ТС] | 7 | |||||
oleg-m1973, предложенный вариант хорош.
Но если предложенный код немного изменить, то возникают некоторые ошибки, с которыми прошу помочь разобраться. В функцию func() передаются ссылки на входные массивы данных. В классе MyClass есть свои массивы output1, output2, output3, output4. Функция func() принимает входные массивы данных, обрабатывает их функторами и результаты складывает в output1...output4 Лямбда ругается на inputVects[i], outputVects[i].
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
25.09.2020, 13:11 | 8 | |||||
А вообще, непонятно, что ты пытаешься сделать
0
|
-1 / 1 / 0
Регистрация: 24.12.2018
Сообщений: 124
|
||||||
25.09.2020, 14:17 [ТС] | 9 | |||||
Я хочу обработать каждый входной массив в отдельном потоке, а результаты обработки сохранить в другие массивы.
Теперь ошибка в этом месте
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
25.09.2020, 14:20 | 10 | |||||
Как-то надо уже самому научиться исправлять такие ошибки
0
|
-1 / 1 / 0
Регистрация: 24.12.2018
Сообщений: 124
|
||||||
25.09.2020, 14:51 [ТС] | 11 | |||||
Учусь.
Теперь такие проблемы: 1) Со звездочкой перед this программа не работает
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
||||||
25.09.2020, 14:55 | 12 | |||||
А без потока твои функции работают?
0
|
51 / 149 / 33
Регистрация: 29.06.2019
Сообщений: 1,428
|
|
25.09.2020, 15:10 | 13 |
прогуглите этот this - это скрытый указатель... думаю, звёздочка в нём уже заложена... имхо
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
25.09.2020, 15:15 | 14 |
Не, не заложена. this - это указатель, а *this - ссылка.
Там проблема в параметрах функции - я тупо не знаю, что туда нужно предавать, т.к. вижу только какой-то кусок кода. А ТС, похоже, вообще слабо представляет, что происходит.
1
|
248 / 70 / 9
Регистрация: 22.07.2018
Сообщений: 321
|
|
25.09.2020, 16:36 | 15 |
0
|
-1 / 1 / 0
Регистрация: 24.12.2018
Сообщений: 124
|
||||||
25.09.2020, 17:54 [ТС] | 16 | |||||
оба варианта работают без звездочки перед this:
0
|
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
25.09.2020, 17:58 | 17 |
0
|
25.09.2020, 17:58 | |
25.09.2020, 17:58 | |
Помогаю со студенческими работами здесь
17
Передача копии адреса в поток Передача в поток многомерных массивов по указателю Передача в поток Передача параметров в поток Передача параметров в поток Передача параметров в поток Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |