c++ Boost:: asio:: deadline_timer प्रत्येक घड़ी के लिए एक थ्रेड का उपयोग करता है?




boost-asio boost-thread (2)

मेरे पास आइटम्स की एक सूची है जो मुझे विभिन्न अंतराल पर अपडेट करने की आवश्यकता है I सूची में हजारों मदों की लंबी अवधि हो सकती है। प्रत्येक आइटम संभवतः एक अलग अंतराल हो सकता है अगर मैं प्रति आइटम एक टाइमर बना देता हूं, क्या मैं सिस्टम को थ्रेड्स के साथ भरेगा? मैं सोच रहा था कि मदों के सेट में सबसे छोटा अंतराल के बराबर एक टाइमर बना सकता है, और फिर प्रत्येक अपडेट पर एक काउंटर बढ़ता है, और फिर यह देखने के लिए जांचें कि काउंटर अब किसी अन्य अंतराल के बराबर है या नहीं। यह काम करना चाहिए बशर्ते कि छोटी अंतराल अन्य सभी अंतरालों का एक बहुमूल्य है। कोई सुझाव?


timerfd_create(2) हाल के संस्करण , 1.43 बूस्ट और बाद में, timerfd_create(2) लिनक्स पर timerfd_create(2) एपीआई का उपयोग करें।

उपलब्ध होने पर, लिनक्स पर टाइमर भेजने के लिए टाइमरफीड का उपयोग करने के लिए बदल दिया गया।


बूस्ट एक धागा प्रति टाइमर का उपयोग नहीं करता है, यह एक टाइमर कतार रखता है हर टाइमर को boost::asio::io_service ऑब्जेक्ट जो वास्तविक काम करता है के साथ बनाया गया है।

यह ऑब्जेक्ट एक या अधिक धागे में अपना काम प्रेषित कर सकता है, जब आप boost::asio::io_service::run() स्पष्ट रूप से एकाधिक धागे से boost::asio::io_service::run() , लेकिन टाइमर और थ्रेड्स के बीच कोई एक-एक-एक पत्राचार नहीं है, और आसियो अपनी पीठ के पीछे धागे न बनाएं





boost-thread