const int&)> task(ColumnSum);
futures.push_back(task.get_future());
threads.emplace_back(std::move(task),std::cref(matrix), i);
легко, не юзаешь packaged_task
Можете пояснить?
в нормальных проектах он не юзабелен
Тогда как нужно делать? Я только учусь и пробую разные варианты
если просто ради посмотреть то почему бы и нет)
А пример можете какой-то дать эталонный? Как лучше бы это сделать допустим У меня функция возвращает int И нужно выполнить многопоточку для неё
да вроде создаёшь треды и её там дергаешь, пока не понятно в чем тут сложность)
Человеку хочется возвращаемое значение получить, которое std::thread отбрасывает
для этого есть future/promise
Вчера ночью обсуждалось уже Фьючи и промисы предлагались
Да, я и пытаюсь через фьючу делать!
я не буду читать 700 сообщений, уж извините
Тут речь о том, чтобы прямо вручную это сделать С помощью std::promise
Пока что не удаётся в вектор засунуть, хотя пример у меня 1 к 1 как на оверфлоу:< Копаюсь
что именно в вектор засунуть?
Вектор интовых фьючей, а в него засунуть возвращаемое значение int из async функции
std::vector<std::future<int>> futures; futures.push_back(std::async(std::launch::async,&SumColumnMatrix, std::ref(matrix), i)); Что-то такое пытаюсь провернуть. Как подсказали мне выше - проблема что оно не засовывается. Не могу понять всё равно...тяжко идёт) https://stackoverflow.com/questions/54565972/c-vector-of-futures?rq=1 Похожий пример, но не работает(
Да говорил же уже... Фьюча не копируется А по ссылке - указатели на фьючи, которые, очевидно, копируются. Но так делать не надо нынче
А...да, блин, точно
Перемещение и emplace_back есть И вообще, emplace_* это дефолтный вариант заталкивания элементов в контейнер
https://godbolt.org/z/en3n7rs3T
0_0 Спасибо! Буду разбираться
Обсуждают сегодня