साथ async मैं std::launch::async
नीति & std::future
वस्तु async से लौटे साथ std::async
समारोह के व्यवहार के बारे में कुछ सवाल है।एसटीडी के व्यवहार :: std :: लांच :: async नीति
निम्नलिखित कोड में, मुख्य थ्रेड foo()
के async
कॉल द्वारा बनाए गए धागे पर पूरा होने की प्रतीक्षा करता है।
#include <thread>
#include <future>
#include <iostream>
void foo()
{
std::cout << "foo:begin" << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(10));
std::cout << "foo:done" << std::endl;
}
int main()
{
std::cout << "main:begin" << std::endl;
{
auto f = std::async(std::launch::async, foo);
// dtor f::~f blocks until completion of foo()... why??
}
std::this_thread::sleep_for(std::chrono::seconds(2));
std::cout << "main:done" << std::endl;
}
और मुझे पता है http://www.stdthread.co.uk/doc/headers/future/async.html कहते
लौटे एसटीडी की अतुल्यकालिक राज्य से संबद्ध अंतिम भविष्य वस्तु का नाशक :: जब तक भविष्य के लिए तैयार है भविष्य को ब्लॉक करेगा।
मेरा प्रश्न है:
- Q1। क्या यह व्यवहार मौजूदा सी ++ मानक के अनुरूप है?
- प्रश्न 2। यदि क्यू 1 का जवाब हाँ है, तो कौन से बयान कहते हैं?
क्या इतना अद्भुत मानक के बारे में है कि अक्सर एक फुटनोट पूरी तरह से एक अध्याय को बदल देता है है ... – orlp