में टाइमर करने का सबसे अच्छा तरीका मैं हमेशा नोटिस करता हूं कि यूनिक्स में टाइमर बनाने के विभिन्न तरीकों से लोगों की अलग-अलग प्रतिक्रियाएं होती हैं।यूनिक्स
मैं कुछ अलग अलग तरीकों से है कि मैं एक घटना यूनिक्स के भीतर हर एक्स सेकंड पर अमल कर सकता है पता है:
- आप एक मतदान धागा कर सकते हैं - सोता साथ pthread_t;
- आप एक टाइमआउट के साथ एक चयन() कर सकते हैं;
- और मुझे लगता है कि आप कुछ अन्य तरीकों से ओएस का उपयोग कर सकते हैं।
क्या कोई टाइमर करने के लिए "सर्वश्रेष्ठ" या सबसे प्रभावी तरीका के साथ कुछ नमूना कोड प्रदान कर सकता है और इसका विवरण क्यों सर्वोत्तम है? मैं इसके लिए सबसे कुशल तंत्र का उपयोग करना चाहता हूं लेकिन मुझे यकीन नहीं है कि यह कौन सा है!
हमारे उद्देश्यों के लिए, बस दिखाएं कि आप "हैलो वर्ल्ड!" प्रिंट कर रहे हैं हर 10 सेकंड में एक बार।
नोट: मेरे पास TR1/बूस्ट/आदि नहीं है। इस प्रणाली पर, कृपया इसे सीधे सी/सी ++ और यूनिक्स सिस्टम कॉल पर रखें। पहली बार उल्लेख नहीं करने के लिए खेद है :)
एकल पिरोया प्रोग्रामिंग में देखा जा सकता समवर्ती एक की तुलना में आसान है, इसलिए यदि आप गारंटी ले सकते हैं कि अपने नियमित रूप से कॉल अंतराल से अधिक नहीं है, मैं एक साधारण समय समाप्ति के साथ जाना चाहते हैं ('चयन() 'के साथ)। आपको मल्टीथ्रेडिंग की आवश्यकता होगी, हालांकि, यदि कॉल स्वयं अधिक समय लेते हैं और कॉल टाइमर से पहले आपके टाइमर को फिर से आग लगनी पड़ती है। –
सिस्टम पहले से ही मल्टीथ्रेडिंग का भारी उपयोग करता है ताकि यह कोई समस्या न हो। इसे उत्तर के रूप में टॉस करें :) –
एचएम, मेरे पास वास्तव में वास्तविक प्रश्न पर कुछ भी कहना नहीं है। मैंने पहले अपनी आवश्यकताओं की आवश्यकता के लिए boost.asio का उपयोग किया है (ioservice लूप एक अलग थ्रेड में चल रहा है), लेकिन मैं शायद विभिन्न दृष्टिकोणों के तुलनात्मक फायदों से बात नहीं कर सकता ... –