packaged-task

    1熱度

    1回答

    我想學習如何使用packaged_task檢索函數的返回值。 在下面的代碼中,我創建了一個運行我的函數DoTask的線程。然後,我將該函數綁定到packaged_task,並讓它等待,然後將其綁定到packaged_task myTask。我提取myTask的未來對象。現在我打開DoTask上的條件變量(notify_one)讓它運行完成。我對myTask的未來做了get()來檢索DoTask中的

    3熱度

    1回答

    我有一些代碼(GitHub上的progschj提供),我已經適應了我的問題。 MakeTask將任何函數及其參數移動到MakeTask中,這會生成packaged_task。創建的任務隨即執行,其未來將返回給調用者。這非常漂亮,但我希望能夠用成員函數來做到這一點。但是,如果我將Func放入結構中,MakeTask中的F & &將失敗,並顯示代碼中提到的錯誤。 #include <future>

    3熱度

    1回答

    是否可以從std::packaged_task創建std::future,它在單獨的線程上執行,但並不總是檢索其結果? #include <future> #include <thread> class Result { Result() {} ~Result() {} }; void foo() { std::packaged_task<Result()

    1熱度

    1回答

    我試圖將packaged_task包裝在泛型類中,但無法用泛型函數初始化它。我已經得到它爲特定的工作,但我希望它更抽象。只是一個fyi,如果你取消註釋了我註釋掉的兩行代碼,代碼運行良好。我的猜測是,我試圖錯誤地使用模板參數。 編輯:做了一些補充,以便實際工作,但同樣的問題仍然存在。所以,如果我嘗試將一個函數傳遞給我的類的ctor,那麼當我嘗試調用ret.get()時,會出現「不良函數調用」。不過,

    2熱度

    1回答

    我試圖用packaged_task實現異步。我試圖通過一個模板化的功能,bsync。 bsync需要2個參數:函數f和參數包,參數,並返回未來fut。未來是由f(args ...)返回的類型。即 - 回報是未來 我想我幾乎在那裏,但我得到一個類型轉換錯誤。任何幫助將不勝感激: #include "stdafx.h" #include <iostream> #include <future>

    0熱度

    1回答

    我正在嘗試使用promises實現packaged_task作爲模板類。 我編譯錯誤說我引用了一個被刪除的函數。我懷疑我需要實現複製和/或移動語義,但我很困惑如何以及從哪裏開始。任何意見是非常讚賞: #include "stdafx.h" #include <iostream> #include <future> #include <functional> #include <thread

    2熱度

    1回答

    以下代碼在Microsoft和Clang編譯器上可用,但在GCC上失敗。它拋出std::system_error與消息-1。它是否知道問題? #include <future> int main() { std::packaged_task<void()> task([](){}); task(); } GCC Clang Visual C++

    15熱度

    2回答

    使用打包任務時遇到了一些非常奇怪的事情。在閱讀~packaged_task時,我得到的印象是,如果std::packaged_task在執行之前被銷燬,承諾將被破壞,並且試圖從未來獲得結果應該拋出std::future_error。 但是,在Visual Studio 2013上,這似乎不是這種情況。藉此下面的代碼: #include <iostream> #include <future>

    2熱度

    2回答

    我一直在嘗試更多關於多線程編程在C + +,我有困難,所以我開始搜索std::promise在這個網站上找到答案,並且低瞧,有一個人和我有同樣的問題。但是閱讀的回答讓我更糊塗了 這是答案的代碼,可能是一個類似的實施std::packaged_task template <typename> class my_task; template <typename R, typename ...Arg

    0熱度

    1回答

    我在使用gcc 4.7.2在openSUSE Linux的下面的代碼的結果感到驚訝: #include <cmath> #include <chrono> #include <cstdlib> #include <vector> #include <chrono> #include <iostream> #include <future> int main(void) {