] हालांकि, जुड़ाव योग्य () विधि यह निर्धारित करने के लिए डिज़ाइन नहीं की गई है कि क्या कोई धागा अभी भी चल रहा है। इसके बजाय, यह लेख इस आवश्यकता को दूर करने के लिए विभिन्न प्लेटफ़ॉर्म-स्वतंत्र तरीके प्रस्तुत करता है। Std :: भविष्य के साथ :: wait_for (0ms), आप लौटे स्थिति मान की जांच करके थ्रेड की स्थिति की जांच कर सकते हैं:
#भविष्य में शामिल करें
#include
मुख्य प्रवेश बिंदु() {
ऑटो भविष्य = std :: async (std :: लॉन्च :: async, [] {
std :: this_thread :: sleep_for (3S);
8 रिटर्न;
});
// थ्रेड स्थिति की जाँच करें
ऑटो स्थिति = Future.wait_for (0ms);
if (स्थिति == std :: Future_status :: तैयार) {
std :: cout
का उपयोग करना #include मुख्य प्रवेश बिंदु() { std :: वादा p; ऑटो भविष्य = p.get_future (); std :: थ्रेड t (
{ std :: this_thread :: sleep_for (3S); p.set_value (सत्य); }); // थ्रेड स्थिति की जाँच करें ऑटो स्थिति = Future.wait_for (0ms); if (स्थिति == std :: Future_status :: तैयार) { std :: cout मुख्य प्रवेश बिंदु() { std :: परमाणु किया (गलत); std :: थ्रेड t ([और किया] { std :: this_thread :: sleep_for (3S); किया = सच; }); // थ्रेड स्थिति की जाँच करें if (किया) { std :: cout std :: packaged_task (std :: थ्रेड के साथ)का उपयोग करके एक और विकल्प STD :: पैक्ड_टास्क का लाभ उठाना है, जो std का उपयोग करने के लिए एक क्लीनर विकल्प प्रदान करता है :: वादा:
#include मुख्य प्रवेश बिंदु() { std :: packaged_taskकार्य ([] {{ std :: this_thread :: sleep_for (3S); }); ऑटो भविष्य = task.get_future (); std :: थ्रेड t (std :: मूव (कार्य)); // थ्रेड स्थिति की जाँच करें ऑटो स्थिति = Future.wait_for (0ms); if (स्थिति == std :: Future_status :: तैयार) { // ... } t.join (); …
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3