c sleep how use sleep function c programs
यह C ++ स्लीप ट्यूटोरियल C ++ में स्लीप फंक्शन पर चर्चा करेगा और यह देखेगा कि सोने के लिए थ्रेड कैसे रखा जाए। हम अन्य कार्यों के बारे में भी जानेंगे। तुम सो जाओ:
कोई भी कंप्यूटर प्रोग्राम जो एक प्रक्रिया है, कार्य या धागा 'सो' सकता है या एक विशिष्ट समय के लिए निष्क्रिय स्थिति में जा सकता है। इस अवधि के लिए, निष्पादन निलंबित है। जब नींद का समय अंतराल समाप्त हो जाता है या सिग्नल या व्यवधान के कारण निष्पादन फिर से शुरू हो जाता है तो निष्पादन फिर से शुरू हो जाता है।
सोने के लिए एक कार्यक्रम (कार्य, प्रक्रिया या धागा) रखने के लिए हम एक नींद प्रणाली कॉल का उपयोग करते हैं। एक विशिष्ट स्लीप सिस्टम कॉल पैरामीटर के रूप में समय लेता है जो इंगित करता है कि कार्यक्रम को सोने के लिए कितना समय चाहिए या निष्क्रिय रहना चाहिए।
=> पूर्ण सी ++ प्रशिक्षण श्रृंखला यहां देखें।
हमारे पास usleep () और थ्रेड :: स्लीप फ़ंक्शंस हैं जिनकी चर्चा हम इस ट्यूटोरियल में करेंगे। प्रदान किया गया समय अधिकतर मिलीसेकंड, माइक्रोसेकंड या सेकंड में होता है और इसके आधार पर हमारे पास विभिन्न कार्य हैं जो प्रोग्राम को सोने के लिए रख सकते हैं।
आप क्या सीखेंगे:
- नींद () समारोह
- Usleep () फ़ंक्शन
- थ्रेड स्लीप (sleep_for और sleep_until)
- बार बार पूछे जाने वाले प्रश्न
- निष्कर्ष
- अनुशंसित पाठ
नींद () समारोह
C ++ भाषा स्वयं की एक नींद फ़ंक्शन प्रदान नहीं करती है। हालाँकि, ऑपरेटिंग सिस्टम की विशिष्ट फाइलें जैसे unistd.h लिनक्स के लिए और Windows.h विंडोज के लिए यह कार्यक्षमता प्रदान करते हैं।
जब हम लिनक्स या UNIX ऑपरेटिंग सिस्टम का उपयोग करते हैं, तो हमें अपने प्रोग्राम में 'unistd.h' हेडर फाइल को शामिल करने की आवश्यकता होती है। नींद () समारोह।
विंडोज ऑपरेटिंग सिस्टम का उपयोग करते समय, हमें नींद () फ़ंक्शन का उपयोग करने के लिए 'Windows.h' हेडर शामिल करना होगा। तो क्रॉस-प्लेटफ़ॉर्म प्रोग्राम लिखने के लिए, हमारे पास नीचे दिखाए अनुसार कोड हो सकता है ताकि दोनों हेडर का उपयोग किया जा सके।
#ifdef _WIN32 #include #else #include #endif
नींद समारोह नीचे वर्णित है:
समारोह प्रोटोटाइप:
अहस्ताक्षरित नींद (अहस्ताक्षरित सेकंड);
पैरामीटर:
सेकंड => सेकंड में समय अवधि जिसके लिए कार्यक्रम का निष्पादन निलंबित है
प्रतिलाभ की मात्रा:
0 => यदि सोए हुए समय के रूप में वापस आ गया है।
यदि नींद एक संकेत से बाधित होती है तो एक अनिश्चित राशि (समय अवधि निर्दिष्ट माइनस वास्तविक समय बीत जाने के बाद) वापस आ जाती है।
विवरण:
नींद () फ़ंक्शन प्रोग्राम या उस प्रक्रिया का कारण बनता है जिसमें इसे कहा जाता है, फ़ंक्शन पैरामीटर द्वारा निर्दिष्ट सेकंड में समय की अवधि के लिए अपने निष्पादन को अस्थायी रूप से निलंबित करने के लिए। निष्पादन को तब तक निलंबित किया जाता है जब तक कि अनुरोधित समय समाप्त नहीं हो जाता है या एक संकेत या एक रुकावट फ़ंक्शन को वितरित किया जाता है।
हालांकि, अगर सिस्टम ने किसी अन्य गतिविधि को निर्धारित किया है, तो निलंबन समय लंबा हो सकता है।
नीचे दिया गया एक C ++ प्रोग्राम है जो दो cout स्टेटमेंट्स के बीच स्लीप फ़ंक्शन का उपयोग करता है।
c ++ 11 साक्षात्कार प्रश्न
#ifdef _WIN32 #include #else #include #endif #include #include using namespace std; int main() { cout << 'Hello '; cout.flush(); sleep(10); cout << 'World'; cout << endl; return 0; }
आउटपुट:
नमस्ते दुनिया
उपरोक्त कार्यक्रम में, हम 'हैलो' प्रिंट करने के बाद 10 सेकंड की अवधि के साथ एक नींद आदेश देते हैं। संकलक 'हैलो' प्रिंट करने के बाद 10 सेकंड तक प्रतीक्षा करता है और फिर 'वर्ल्ड' प्रिंट करता है।
ध्यान दें: वास्तव में स्लीप कमांड के काम को समझने के लिए पाठकों को इस कार्यक्रम को निष्पादित करना चाहिए
Usleep () फ़ंक्शन
हेडर 'unistd.h' एक और फ़ंक्शन 'usleep ()' प्रदान करता है जो एक निर्दिष्ट समय के लिए प्रोग्राम के निष्पादन को निलंबित कर सकता है। काम करना पहले से वर्णित नींद () फ़ंक्शन के समान है।
समारोह प्रोटोटाइप: int usleep (useconds_t useconds);
पैरामीटर: useconds => माइक्रोसेकंड की संख्या जिसके लिए निष्पादन निलंबित है
प्रतिलाभ की मात्रा:
0 => Usleep सफलतापूर्वक वापस आ गया है।
-1 & इरनो => कार्य विफल रहा।
विवरण:
फ़ंक्शन usleep () useconds microseconds के लिए कॉलिंग थ्रेड के निष्पादन को निलंबित कर देता है या जब तक कि सिग्नल थ्रेड को वितरित नहीं किया जाता है जो निष्पादन को बाधित करता है।
Usleep फ़ंक्शन में उपयोग किए जाने वाले टाइमर मूल्यों की ग्रैन्युलैरिटी कार्यान्वयन-विशिष्ट हो सकती है। यदि हमें कार्यान्वयन द्वारा निर्दिष्ट की तुलना में बारीक बारीकता की आवश्यकता है, तो वास्तविक टाइमर मान अगले समर्थित मूल्य तक गोल है।
नीचे दिए गए एक उदाहरण के लिए usleep () फ़ंक्शन का प्रदर्शन है।
#include #include #include using namespace std; int main() { cout << 'Hello '; cout.flush(); usleep(10000); cout << 'World'; cout << endl; return 0; }
आउटपुट:
नमस्ते दुनिया
जैसा कि उपरोक्त आउटपुट में दिखाया गया है, हम यूएलईपी फ़ंक्शन के लिए 10000 माइक्रोसेकंड के रूप में समय अवधि निर्दिष्ट करते हैं और नींद कार्यक्रम का उपयोग करते हुए पिछले कार्यक्रम की तरह, हम 'हैलो वर्ल्ड' स्ट्रिंग प्रिंट करते हैं।
थ्रेड स्लीप (sleep_for और sleep_until)
सी ++ 11 सोने के लिए एक धागा लगाने के लिए विशिष्ट कार्य प्रदान करता है।
दो कार्य हैं:
Std :: this_thread :: sleep_for
समारोह प्रोटोटाइप:
template void sleep_for( const std::chrono::duration& sleep_duration );
पैरामीटर: sleep_duration => सोने की समय अवधि
प्रतिलाभ की मात्रा: कोई नहीं
विवरण: हेडर में sleep_for () फ़ंक्शन को परिभाषित किया गया है। Sleep_for () फ़ंक्शन वर्तमान थ्रेड के निष्पादन को कम से कम निर्दिष्ट समय के लिए ब्लॉक करता है यानी sleep_duration।
शेड्यूलिंग गतिविधियों या संसाधन विवाद में देरी के कारण यह फ़ंक्शन निर्दिष्ट समय से अधिक समय तक अवरुद्ध हो सकता है।
नींद का उपयोग करने वाले C ++ का उदाहरण नीचे दिया गया है:
#include #include #include using namespace std; int main() { cout << 'Hello I'm waiting....' << endl; this_thread::sleep_for(chrono::milliseconds(20000) ); cout << 'Waited 20000 ms
'; }
आउटपुट:
नमस्कार मुझे इंतजार है ...
इंतजार किया 2000 मि
उपरोक्त कार्यक्रम में, हमारे पास 20000 मिलीसेकेंड की एक निर्दिष्ट नींद की अवधि है। इसका मतलब है कि ऑपरेशन को फिर से शुरू करने से पहले धागा 20000 मिलीसेकंड के लिए ब्लॉक हो जाएगा।
Std :: this_thread :: sleep_until
समारोह प्रोटोटाइप:
template void sleep_until( const std::chrono::time_point& sleep_time );
पैरामीटर: sleep_time => समय अवधि जब तक धागा अवरुद्ध किया जाना है।
प्रतिलाभ की मात्रा: कोई नहीं
विवरण: यह फ़ंक्शन हेडर में परिभाषित किया गया है। Sleep_until () फ़ंक्शन थ्रेड के निष्पादन को तब तक रोकती है जब तक कि नींद का समय बीत न जाए। अन्य फ़ंक्शनों की तरह, यह फ़ंक्शन शेड्यूलिंग गतिविधियों या संसाधन विवाद में देरी के कारण निर्दिष्ट समय से अधिक लंबी अवधि के लिए भी ब्लॉक हो सकता है।
Sleep_until फ़ंक्शन के लिए C ++ प्रोग्राम नीचे दिया गया है।
#include #include #include using namespace std; void current_time_point(chrono::system_clock::time_point timePt) { time_t timeStamp = chrono::system_clock::to_time_t(timePt); cout << std::ctime(&timeStamp) << endl; } void threadFunc() { cout<<'Current Time :: '; current_time_point(chrono::system_clock::now()); chrono::system_clock::time_point timePt = chrono::system_clock::now() + chrono::seconds(60); cout << 'Sleeping Until :: '; current_time_point(timePt); this_thread::sleep_until(timePt); cout<<'Woke up...Current Time :: '; current_time_point(chrono::system_clock::now()); } int main() { std::thread th(&threadFunc); th.join(); return 0; }
आउटपुट:
वर्तमान समय :: थु सिप 19 19:52:01 2019
सोते हुए तक :: थू सिप 19 19:53:01 2019
उठा ... वर्तमान समय :: थू सिप 19 19:53:01 2019
इस कार्यक्रम में, हम धागे को 60 सेकंड यानी 1 मिनट के लिए सोते हैं। एक बार 1 मिनट पूरा हो गया है; थ्रेड जागता है और वर्तमान समय को प्रिंट करता है।
बार बार पूछे जाने वाले प्रश्न
Q # 1) C ++ में क्या करता है?
उत्तर: नींद () फ़ंक्शन एक निश्चित अवधि के लिए कार्यक्रम के निष्पादन को निलंबित करता है। यह समय अवधि नींद () फ़ंक्शन के तर्क के रूप में निर्दिष्ट है।
Q # 2) C ++ में नींद के लिए हेडर फाइल क्या है?
उत्तर: नींद के लिए हेडर LINUX / UNIX ऑपरेटिंग सिस्टम के लिए 'unistd.h' और विंडोज ऑपरेटिंग सिस्टम के लिए 'Windows.h' है। थ्रेड स्लीप के लिए जो _ sleep_for ’और‘ sleep_until ’फ़ंक्शन का उपयोग करता है, हेडर का उपयोग किया जाता है।
Q # 3) # अनइंस्टॉल एच का उपयोग क्या है?
उत्तर: हेडर 'Unistd.h' वह हेडर है जो प्रोग्राम के निष्पादन को स्थगित करने के लिए नींद () फ़ंक्शन को परिभाषित करता है।
निष्कर्ष
नींद () फ़ंक्शन के लिए इस ट्यूटोरियल में, हमने नींद समारोह और usleep () फ़ंक्शन पर चर्चा की है जो नींद और थ्रेड स्लीप फ़ंक्शंस, sleep_for और sleep_until के समान है। नींद के समय को निर्दिष्ट करने के लिए उपयोग की जाने वाली समय इकाई को छोड़कर नींद () और usleep () फ़ंक्शन समान हैं।
नींद () फ़ंक्शन में, समय सेकंड में निर्दिष्ट होता है, जबकि usleep () फ़ंक्शन में, समय माइक्रोसेकंड में निर्दिष्ट होता है। थ्रेड फ़ंक्शंस sleep_for () एक निश्चित समय अवधि के लिए थ्रेड निष्पादन को एक तर्क के रूप में प्रदान करता है। दूसरा थ्रेड फ़ंक्शन sleep_until () थ्रेड के निष्पादन को निलंबित करता है जब तक कि एक निर्दिष्ट समय बीत चुका है।
पठन पाठन = >> थ्रेड टेस्टिंग क्या है?
शेड्यूल किए गए या अन्य संसाधन-विशिष्ट देरी के आधार पर नींद के सभी कार्यों पर चर्चा करने में अधिक समय लग सकता है।
=> लोकप्रिय सी ++ प्रशिक्षण श्रृंखला के माध्यम से यहां पढ़ें।
अनुशंसित पाठ
- हाथों पर उदाहरण के साथ पायथन मेन फंक्शन ट्यूटोरियल
- उदाहरणों के साथ C ++ में गुणा करना
- कर्मचारी समय ट्रैकिंग के लिए 10 सर्वश्रेष्ठ मुफ्त समय घड़ी सॉफ्टवेयर
- QTP ट्यूटोरियल # 21 - कैसे QTP टेस्ट को मॉड्यूलर और पुन: प्रयोज्य क्रियाओं और फ़ंक्शन पुस्तकालयों का उपयोग करें
- प्रकार और उदाहरण के साथ C ++ में कार्य
- यूनिक्स यूटिलिटीज प्रोग्राम्स कमांड्स: व्हेन, मैन, फाइंड सू, सूडो (पार्ट डी)
- सेलेनियम विशेषज्ञों के लिए पार्ट-टाइम फ्रीलांसिंग जॉब के अवसर
- फ्रीलांसरों के लिए 10 सर्वश्रेष्ठ समय ट्रैकिंग ऐप्स (2021 चयन)