मैं वर्तमान में एक अभ्यास के रूप में एक साधारण पी 2 पी नेटवर्क विकसित कर रहा हूं। नेटवर्क में प्रत्येक नोड नेटवर्क को छोड़ने वाले नोड्स का पता लगाने में सक्षम होने के लिए अन्य नोड्स के सबसेट में दिल की धड़कन भेजता है। दिल की धड़कन पैकेट के अलावा मैं पैकेट भेजता हूं जब नए नोड्स नेटवर्क में शामिल होते हैं/छोड़ते हैं, जब वे संसाधन (छोटी टेक्स्ट फाइल) आदि का पता लगाना चाहते हैं, तो सभी पैकेट यूडीपी पैकेट हैं।कई आने वाले पैकेट को संभालने का सबसे अच्छा तरीका
जब भी मुझे एक पैकेट मिलता है तो मैं एक नया थ्रेड शुरू करता हूं जो उस विशिष्ट पैकेट को संभालता है। हालांकि मैं एक आवेदन जीवनकाल के दौरान शुरू होने वाले धागे की मात्रा से चिंतित हूं जो काफी हद तक बढ़ता है (विशेष रूप से दिल की धड़कन के कारण)। (डेडलॉक्स का खतरा भी है और जैसा कि मैं टालना चाहता हूं)।
मैंने एक कतार या कुछ ऐसा करने के बारे में सोचा जहां मैंने सभी आने वाले पैकेट रखे और एक ही थ्रेड को उस कतार (निर्माता-उपभोक्ता पैटर्न की तरह कुछ) में एक ही समय में सभी पैकेटों को संभालने के बारे में सोचा। मैं पैकेट को तेजी से संभालना चाहता हूं ताकि प्रेषक को नहीं लगता कि पैकेट गुम हो गया है।
उनमें से प्रत्येक के लिए एक नया धागा शुरू किए बिना कई अलग-अलग आने वाले पैकेट को संभालने का सबसे अच्छा तरीका क्या है? क्या मुझे अपने पास जो चाहिए, निर्माता-उपभोग करने वाला या कुछ अलग होना चाहिए?
निश्चित रूप से। एक लिंक्डलिस्ट के साथ निर्माता-उपभोक्ता का प्रयोग करें। सबसे आसान तरीका मैं सोच सकता हूँ। – DankMemes
आप अपने पुराने तरीके से कुछ पुराने तरीके से शुरू कर सकते हैं, कुछ बेंचमार्क करें और फिर कुछ नया प्रयास करें, जैसे "विघटनकर्ता" (http://lmax-exchange.github.com/disruptor/) और फिर कुछ और करें बेंचमार्क। –
यह "कई अलग-अलग आने वाले पैकेट" को मापने में मदद कर सकता है ... अपेक्षाकृत बोलते हुए, दिल की धड़कन ज्यादा नहीं होनी चाहिए, जब एक आधुनिक प्रणाली आमतौर पर सैकड़ों से हजारों पैकेट प्रति सेकेंड को अपने एनआईसी की संख्या और प्रकार के आधार पर संभाल सकती है । मुझे संदेह है कि दर्जन प्रति मिनट सीमा में दिल की धड़कन अधिक हो सकती है ... – twalberg