दिलचस्प पोस्ट
addEventListener बनाम onclick रनटाइमः मुख्य थ्रेड मुख्य लूप में नहीं है JavaScript (GIF / PNG) में एक डीआईवी की एक छवि बनाएं बाश में किसी फ़ाइल की अंतिम संशोधित तारीख को प्रिंट करें PHP को गतिशील रूप से XML फ़ाइल का प्रयोग कैसे करें? Google+ दीवार में पोस्ट कैसे करें पर्ल में नई कुछ :: कक्षा और कुछ :: वर्ग-> नया () के बीच अंतर क्या है? Java.sql.SQLException प्राप्त करना: ResultSet बंद होने के बाद ऑपरेशन की अनुमति नहीं है MySQL मैच () के विरुद्ध () – प्रासंगिकता और स्तंभ द्वारा आदेश? एक चर में पाइप उपप्रक्रिया मानक आउटपुट Express.js में SSL / https को कैसे लागू करें UITextView में प्लेसहोल्डर नई लाइनों सहित किसी भी वर्ण से मेल करने के लिए रेगेक्स जावा 8 में नए जावा.पुनर क्यों हैं? जावा 8 में तरीकों से सभी आदिम प्रकारों के लिए अतिभारित नहीं है? git: सिर बिना अलग किए गए स्विच शाखा

समान गर्तिका पर समानांतर कॉल / recv भेजना मान्य हैं?

  1. क्या हम एक धाे से दूसरे को बुलाते हैं और उसी सॉकेट पर दूसरे को बुला सकते हैं?
  2. क्या हम एक ही गर्तिका पर अलग-अलग थ्रेड्स से समान रूप से एकाधिक भेज सकते हैं?

मुझे पता है कि एक अच्छा डिजाइन इस से बचना चाहिए, लेकिन मैं यह स्पष्ट नहीं कर रहा हूं कि ये सिस्टम एपीआई कैसे व्यवहार करेंगे। मैं इसके लिए भी अच्छे दस्तावेज ढूंढने में असमर्थ हूं।

दिशा में कोई भी संकेत उपयोगी होगा।

वेब के समाधान से एकत्रित समाधान "समान गर्तिका पर समानांतर कॉल / recv भेजना मान्य हैं?"

पीओएसआईआईएसएक्स ने अणु संचालन के रूप में भेजे जाने / आरएवीवी को परिभाषित किया है, तो मान लें कि आप पॉसिक्स भेज / आरईसी के बारे में बात कर रहे हैं, हाँ, आप उन्हें कई थ्रेड्स से एक साथ कॉल कर सकते हैं और चीजें काम करेंगे।

इसका जरूरी नहीं मतलब है कि उन्हें समानांतर में निष्पादित किया जाएगा – एकाधिक भेजे जाने के मामले में, दूसरी संभावना है कि पहले पूर्ण होने तक ब्लॉक हो जाएगा। संभवतः आपको यह बहुत ज्यादा ध्यान नहीं दिया जाएगा, क्योंकि एक बार एक बार उसके डाटा को सॉकेट बफर में डाल दिया जाता है।

यदि आप SOCK_STREAM सॉकेट्स का उपयोग कर रहे हैं, तो काम करने की कोशिश में एक समानांतर कम होने की संभावना कम है क्योंकि send / rec ने संदेश के केवल एक भाग को भेज या प्राप्त कर सकते हैं, जिसका अर्थ है कि चीजें अलग हो सकती हैं।

ब्लॉकिंग को SOCK_STREAM सॉकेट पर ब्लॉक करना / ब्लॉक केवल जब तक वे कम से कम 1 बाइट भेजते हैं या ब्लॉक नहीं करते हैं, इसलिए अवरुद्ध और गैर-अवरोधन के बीच का अंतर उपयोगी नहीं है।

सॉकेट डिस्क्रिप्टर प्रक्रिया से जुड़ा है, न कि किसी विशिष्ट थ्रेड के लिए। इसलिए, अलग-अलग धागे में एक ही सॉकेट से / भेजने / प्राप्त करने के लिए संभव है, ओएस सिंक्रनाइज़ेशन को संभाल देगा।

हालांकि, अगर भेजने / प्राप्त करने का आदेश अर्थपूर्ण रूप से महत्वपूर्ण है, तो आप खुद (क्रमशः आपके कोड) को विभिन्न थ्रेड्स में ऑपरेशन के बीच उचित अनुक्रमण सुनिश्चित करना है – जैसा कि हमेशा धागे के साथ होता है

मुझे नहीं पता कि समानांतर में कैसे प्राप्त करना संभवतः कुछ भी हासिल कर सकता है यदि आपके पास 3 बाइट्स संदेश है, तो 1 धागा 1 2 बाइट और दूसरा दूसरा बाइट प्राप्त कर सकता है, लेकिन आपके पास यह कहने का कोई तरीका नहीं है कि कौन सा था जब तक आपके संदेश केवल एक बाइट लंबा नहीं होते, तब तक कोई रास्ता नहीं है कि आप मज़बूती से प्राप्त होने वाले कई थ्रेड्स के साथ कुछ भी काम कर सकते हैं।

यदि आप एक ही कॉल में पूरे संदेश को भेजते हैं, तो एकाधिक भेज सकते हैं, लेकिन मुझे यकीन नहीं है। यह संभव है कि कोई दूसरे को ओवरराइट कर सकता है। निश्चित रूप से ऐसा करने के लिए कोई भी प्रदर्शन लाभ नहीं होगा

यदि एकाधिक सूत्र को भेजने की आवश्यकता है, तो आपको एक सिंक्रनाइज़ किए गए संदेश कतार को लागू करना चाहिए। एक धागा है जो वास्तविक प्रेषण करता है जो कि कतार से संदेश पढ़ता है और अन्य थ्रेड्स पूरे संदेश को एन्ज्यू करते हैं। वही काम प्राप्त करने के लिए काम करेगा, लेकिन प्राप्त थ्रेड को संदेशों के प्रारूप को जानना होगा, ताकि ये उन्हें ठीक से डिसेरीलाइज कर सके।