簡體   English   中英

C ++ 11 std :: async回調

[英]C++11 std::async Callback

我想實現一個查詢數據庫並異步執行查詢的對象。

假設我們有一個要使用對象B進行查詢的對象A。A調用了對象B的executeQuery方法並開始執行其他操作。 B的ExecuteQuery方法是異步的,對quini A無阻塞。當查詢結果准備好時,我希望通過回調將其在B中通知給A,以便A僅在准備好時才能讀取結果。

在C ++ 11中實現此機制的最佳方法是什么?

我嘗試使用std :: async進行嘗試,但改為在std :: future中讀取結果,當我的std :: future已經包含結果時,我希望收到回調,從而避免了我的調用成為阻塞程序。

謝謝

當您有未來時,可以使用.wait()等待執行完成,或者可以使用boost :: mutex在發生特定事件時向其他線程發出信號,然后使某些事件函數起作用。

但是我認為您可能需要老式的回調函數設置-只需將函數指針傳遞給ExecuteQuery函數,然后對其進行調用

您可以傳遞一個指向函數的指針並執行它。

或者將std :: future與std :: async一起使用

您應該使用wait_for函數而不是wait。 並檢查結果是否准備就緒。

您還可以在異步函數的末尾設置原子布爾值。 並在主線程中檢查此布爾值。

https://en.cppreference.com/w/cpp/thread/future/wait_for

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM