पहले बंद, यह जानना महत्वपूर्ण है कि आप क्या कर रहे हैं वह है ible। अगर वे सभी सीपीयू-बाध्य हैं, तो ऐसा करें, आईएमओ; एक वेब सर्वर पहले से ही बहुत थ्रेड किया गया है, और आमतौर पर शुरू करने के लिए एक व्यस्त जगह है। संभावना अधिक है कि आप एकाधिक कोर का उपयोग कर पूरी चीज को धीमा कर देंगे। हालांकि, 1 उपयोगकर्ता के लिए यह बहुत अच्छा लगेगा!
यदि आप आईओ-बाउंड हैं, तो कोई भी ऐसा करने के तरीके हैं; पसंदीदा जो भी आप बात कर रहे हैं उसके इनबिल्ट एसिंक तरीकों का उपयोग करना होगा, ताकि आप नियमित थ्रेड के बजाय आईओसीपी का उपयोग कर सकें। तो NetworkStream
के लिए, आप BeginRead(...)
आदि का उपयोग करेंगे
फिर आपको सबकुछ एक साथ शामिल होने की आवश्यकता है। बहुत अधिक तरीके; व्यक्तिगत रूप से मैं Monitor.Wait
और Monitor.Pulse
का उपयोग करता हूं, क्योंकि यह अप्रबंधित कोड पर जाने से बचाता है (कई प्रतीक्षा-हैंडल वास्तव में ओएस-प्रदान किए जाते हैं)।
यह भी ध्यान दें: थ्रेडिंग/समांतरता असफल होने के कई मजेदार तरीकों के साथ एक बंडल में आती है; आम तौर पर आपको केवल स्थिर सिंक्रनाइज़ेशन के लिए विधियों/डेटा के बारे में अधिक चिंता करने की आवश्यकता है, लेकिन यदि आपके पास एक ही अनुरोध में एकाधिक अनुरोध चीजें कर रहे हैं: बाधाओं के लिए देखें ... बहुत सारे हैं।
.NET का अगला संस्करण निरंतरता को बहुत आसान बनाने के लिए है; मुझे यह देखने की ज़रूरत है कि हम आईओसीपी परिदृश्यों में वर्तमान प्रयोगात्मक कोड कितनी आसानी से लागू कर सकते हैं।
स्रोत
2011-03-14 12:11:29
बहु-थ्रेडिंग –
हाय अभिषेक का उपयोग करें, आप एक समय में सभी 4 विधियों को कॉल नहीं कर सकते हैं, कम से कम एक सेकंड देरी होनी चाहिए। यदि आप अभी भी 4 विधियों को कॉल करना चाहते हैं तो डेविड पाइरास ने आपको मल्टीथ्रेडिंग का उपयोग करने और वापसी के मूल्य के लिए "पृष्ठभूमिवर्कर" वर्ग बीकॉज़ की मदद लेने के लिए कहा है, जब तक कि सभी 4 विधियां निष्पादित न हों। – SharpUrBrain
@SharpUrBrain - कुछ भी करने के लिए "एक सेकंड" क्या है?और आईएमओ पृष्ठभूमिवर्कर वेब स्तरीय –