2011-05-21 6 views
6

सी ++ में किसी विशिष्ट समय पर फ़ंक्शन को कॉल करना संभव है? उदाहरण के लिए, मैं function_It() को लॉन्च करना चाहता हूं, जब number_of_elapsed_milliseconds_since_application_start = x।मैं C++ में किसी विशिष्ट समय पर फ़ंक्शन कैसे लॉन्च कर सकता हूं?

एक क्रॉस-प्लेटफ़ॉर्म समाधान आदर्श होगा।

+0

लॉन्च नया धागा। 'नींद (number_of_elapsed_milliseconds_since_application_start); doit(); ' –

उत्तर

3

शुद्ध सी ++ में शायद नहीं, आपको कुछ ओएस विशिष्ट कोड की आवश्यकता होगी। लेकिन आप एक प्लेटफॉर्म-स्वतंत्र ओएस-रैपर का उपयोग कर सकते हैं, जैसे क्यूटी (हालांकि यह आपकी काफी सरल समस्या के लिए एक ओवरकिल हो सकता है)।

संपादित करें: सबसे सरल चीज जो आप कर सकते हैं, सक्रिय रूप से एक लूप में प्रोग्राम को अवरुद्ध कर रही है, जो समय सीमा तक पहुंचने तक वर्तमान समय तक लगातार मतदान करती है, लेकिन शायद यह एक बहुत ही उपयोगी समाधान नहीं है। तो धागे या कुछ घटना-संचालित टाइमर के बिना (जैसा कि प्रत्येक ओएस होना चाहिए) आप बहुत दूर नहीं होंगे।

+0

मुझे लगता है कि प्रत्येक प्रमुख ओएस में 'नींद' फ़ंक्शन होता है, जो वास्तव में आपको गैर-मानक कोड के लिए आवश्यक है। –

+0

@MooingDuck ठीक है, निश्चित रूप से सी ++ 11 के आगमन के साथ मेरा जवाब इतना समझ में नहीं आता है। –

3

धागा बनाओ, उस समय तक सो जाओ, और नींद के बाद, यह उस कार्य को चलाएं।

+2

+1, हालांकि मुझे लगता है कि हम रीयल टाइम ओएस का उपयोग नहीं कर रहे हैं, इसलिए थ्रेड ठीक समय पर जागृत नहीं होगा, यह थोड़ा सा बंद हो जाएगा, वर्तमान मशीन लोड के आधार पर कितना होगा। –

1

यह 'कॉलबैक' फ़ंक्शन या 'श्रोता' माना जाता है। इसे कार्यान्वित करने के बारे में अधिक जानकारी यहां मिल सकती है: http://www.cprogramming.com/tutorial/function-pointers.html

आशा है कि मदद करता है।

संबंधित मुद्दे

 संबंधित मुद्दे