Описание тега packaged-task

NoneStd::packaged_task<> - это шаблон класса, представленный с функцией многопоточности C++ 11. Этот тег следует использовать для вопросов, касающихся шаблона класса C++ и его использования с многопоточностью C++ и сопрограммами. Также следует указать используемый стандарт C++ (C++11/14/17/20). Шаблон класса используется для обертывания вызываемой сущности (лямбда, функция и т. Д.) Для создания асинхронной задачи.
0 ответов

C++ Future with Arguments Error

Ниже приведен код, который я использую для запуска packaged_task. Однако, когда я пытаюсь скомпилировать, я получаю сообщение об ошибке: 'std::function&lt;_Ret(CStore &amp;, FileDetails &amp;)&gt;::function(std::function&lt;_Ret(CStore &amp;, FileDe…
23 апр '16 в 15:15
2 ответа

Что означает этот синтаксис, `шаблон класса <класс R, класс... Args> имя класса<R (Args...)>`

Я пытался больше о многопоточном программировании в C++, и у меня были трудности с пониманием std::promise поэтому я начал искать ответы на этом сайте, и вот, есть кто-то с тем же вопросом, что и я. Но чтение ответа еще больше смутило меня, так как …
4 ответа

В чем разница между packaged_task и async

Работая с многопоточной моделью C++11, я заметил, что std::packaged_task&lt;int(int,int)&gt; task([](int a, int b) { return a + b; }); auto f = task.get_future(); task(2,3); std::cout &lt;&lt; f.get() &lt;&lt; '\n'; а также auto f = std::async(std::…
09 авг '13 в 09:34
1 ответ

Зачем нужен конструктор копирования для packaged_task в VS

class MoveOnlyOperation { public: MoveOnlyOperation() = default; MoveOnlyOperation(const MoveOnlyOperation&amp;) = delete; MoveOnlyOperation(MoveOnlyOperation&amp;&amp;) = default; int operator()() { return 0; } }; Я хочу обернуть экземпляр объекта …
26 фев '18 в 19:21
1 ответ

C++: сборка асинхронно с packaged_task

Я пытаюсь реализовать асинхронную с помощью packaged_task. Я пытаюсь это с помощью шаблонной функции, bsync. bsync принимает 2 аргумента: функцию f и пакет параметров args и возвращает будущее, fut. Будущее имеет тип, возвращаемый f(args...). Т.е. в…
1 ответ

Добавление фиктивного конструктора копирования в std::packaged_task

Я пытаюсь обойти отсутствие в std::packaged_task конструктора копирования, чтобы я мог передать его в функцию std:: (которая будет только перемещена). Я унаследовал от std::packaged_task и добавил фиктивный конструктор копирования, который, я полага…
12 окт '16 в 10:17
1 ответ

Добавить std::packaged_task в существующий поток?

Есть ли стандартный способ добавить std::packaged_task в существующую тему? Перед запуском задачи должно произойти нетривиальное количество накладных расходов, поэтому я хочу сделать это один раз, а затем продолжить выполнение потока и ожидать выпол…
26 окт '18 в 18:57
1 ответ

Безопасно ли никогда не получать результат std::future из std::packaged_task?

Безопасно ли создавать std::future из std::packaged_task, который выполняется в отдельном потоке, но не всегда получает его результат? #include &lt;future&gt; #include &lt;thread&gt; class Result { Result() {} ~Result() {} }; void foo() { std::packa…
31 май '16 в 02:55
1 ответ

Почему мой поток вызывает функциональный объект, а не присваивает его возвращаемое значение будущему объекту моего packaged_task?

Я хочу узнать, как получить возвращаемое значение функции с помощью packaged_task. В приведенном ниже коде я создаю поток, который выполняет мою функцию DoTask. Затем я связываю эту функцию с packaged_task и заставляю ее ждать, пока я связываю ее с …
15 июл '16 в 13:06
1 ответ

std::packaged_task с помощью std::bind(func, this) внутри класса

Я подготовил небольшой фрагмент, изолирующий мою проблему здесь. Вот: #include &lt;stdio.h&gt; #include &lt;future&gt; #include &lt;functional&gt; class foo { public: foo(int a, int b) : m_a(a), m_b(b) {} int somefunc(int a, int b) { printf("foo w0w…
21 фев '15 в 23:02
1 ответ

Использование std::bind для захвата пакета параметров "по ходу"

Я пытаюсь реализовать std::async с нуля, и наткнулся на сбой с аргументами типа только для перемещения. Суть этого в том, что C++14 init-captures позволяет нам захватывать отдельные переменные "по ходу" или "при совершенной пересылке", но они не поз…
1 ответ

Упаковка std::packaged_task внутри пользовательского класса

Я пытаюсь обернуть std::packaged_task в другой класс, чтобы использовать его вместе с планировщиком задач. На данный момент у меня все работает, кроме поддержки std:: future. Чтобы получить поддержку std:: future, я понял, что мне нужно использовать…
15 янв '13 в 20:20
1 ответ

Используйте функцию-член в std::packaged_task с std::thread (не std::async)

Я пытаюсь получить std:: future от std:: thread, и кажется, что единственный способ (?) Сделать это - использовать std::packaged_task. Ну, кроме того, функция, которую я хочу вызвать в std:: thread, является функцией-членом класса. Я мог бы найти эт…
24 окт '14 в 16:44
1 ответ

Идеальная пересылка и упакованный_задачник

Я пытаюсь обернуть packaged_task в универсальный класс, но не могу инициализировать его с помощью универсальной функции. Я заставил это работать для определенной, но я хочу, чтобы это было более абстрактным. Просто к сведению, если вы раскомментируе…
01 май '15 в 23:12
3 ответа

C++11 packaged_task, работающий со своим собственным потоком, нуждается в join(), чтобы получить будущее

Из книги C++11, которую я недавно получил, я пытаюсь построить пример на странице 123 (packaged_task 5.3.5.2), и после нескольких вещей, чтобы это работало с XCode, у меня есть пара вопросов: Во-первых, кажется, что существует требование передать ук…
30 ноя '13 в 22:25
0 ответов

C++ packaged_task зависает в параллельной оболочке

Я реализую параллельную оболочку, представленную Хербом Саттером, представленным в его докладе "C++ и после 2012 года". template &lt;typename T&gt; class ConcurrentWrapper { private: std::deque&lt;std::unique_ptr&lt;std::function&lt;void()&gt;&gt;&g…
26 сен '16 в 16:38
2 ответа

Как мне создать packaged_task с параметрами?

Следуя этому превосходному учебнику по будущим, обещаниям и пакетным задачам, я дошел до того, что хотел подготовить свое собственное задание. #include &lt;iostream&gt; #include &lt;future&gt; using namespace std; int ackermann(int m, int n) { // mi…
25 сен '11 в 20:44
1 ответ

std::packaged_task действительно дорого?

Я удивлен результатами следующего кода, использующего gcc 4.7.2 на Opensuse Linux: #include &lt;cmath&gt; #include &lt;chrono&gt; #include &lt;cstdlib&gt; #include &lt;vector&gt; #include &lt;chrono&gt; #include &lt;iostream&gt; #include &lt;future&…
05 окт '13 в 21:49
0 ответов

Добавление заполнителей std::bind к аргументам функции

Я использую класс Merge для инкапсуляции сортировки слиянием. Я хотел бы использовать пакетную задачу для многопоточности рекурсивных вызовов: void Merge::executeSort() { packaged_task&lt;void(Merge)&gt; mergeLeft(bind(Merge::executeSort, _1)); pack…
26 мар '12 в 15:23
1 ответ

C++: packaged_task через обещания

Я пытаюсь реализовать packaged_task как шаблонный класс, используя обещания. Моя ошибка компиляции говорит, что я ссылаюсь на удаленную функцию. Я подозреваю, что мне нужно реализовать семантику копирования и / или перемещения, но я не понимаю, как …
04 май '15 в 17:28