170 похожих чатов

Привет, как я могу асинхронно вызвать некоторую функцию N раз

и получить результаты?
Вот что я пробовал с std::packaged_task, но я не могу вызывать его более одного раза:
std::packaged_task packagedTask{ [] {} };


//packagedTask.get_future(); // way to get result afterwards

packagedTask();
packagedTask(); // future_error - promise already satisfied

*Примечание 1: я хочу сам контролировать, когда и где выполняется функция
*Примечание 2: я ограничен C++ 11.

5 ответов

19 просмотров

создавай каждый раз новый packaged_task, один и тот же нельзя много раз дёргать

ꍏꈤꀸ- Автор вопроса
Denis P
создавай каждый раз новый packaged_task, один и то...

Он создается только один раз и у меня нет доступа к нему. Пример кода: struct Task { std::function<void()> wrappedFunction_; template <typename Function, typename...Args> auto submit(Function && function, Args &&... args) -> std::future<decltype(function(args...))> { using ResultType = decltype(function(args...)); std::function<ResultType()> bindedFunction{ std::bind(std::forward<Function>(function), std::forward<Args>(args)...) }; const auto packagedTask = std::make_shared<std::packaged_task<ResultType()>>(bindedFunction); wrappedFunction_ = [packagedTask] { (*packagedTask)(); }; // pitfall for copying return packagedTask->get_future(); } }; Если я сделаю копию объекта, то оба будут указывать на один и тот же std::packaged_task и поэтому я не могу вызвать больше одного раза.

ꍏꈤꀸ
Он создается только один раз и у меня нет доступа ...

если не можете значит у вас будет одна задача

ꍏꈤꀸ- Автор вопроса
ꍏꈤꀸ
Он создается только один раз и у меня нет доступа ...

сразу скажу, что да, можно аргументы sumbit вынести в шаблон класса и иметь полный контроль, но так как в С++11 нет CTAD, то будет выглядеть ужасно

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта