सभी पूरी तरह सैद्धांतिक हैं, प्रश्न अभी दिमाग में आया है और मुझे पूरा यकीन नहीं था कि उत्तर क्या है:क्या एक बहु-थ्रेडेड एप्लिकेशन वास्तव में एकल-थ्रेडेड एप्लिकेशन से तेज होगा?
मान लें कि आपके पास एक ऐसा एप्लिकेशन है जो 4 स्वतंत्र गणनाओं की गणना करता है। (पूरी तरह से स्वतंत्र, कोई फर्क नहीं पड़ता कि आप उन्हें क्या आदेश देते हैं और आपको किसी की गणना करने की आवश्यकता नहीं है)। इसके अलावा मान उन गणना लंबी (मिनट) और सीपीयू बाध्य
1) (आईओ के किसी भी प्रकार के लिए इंतजार नहीं) अब कर रहे हैं, यदि आप एक 1 प्रोसेसर कंप्यूटर है, किसी एकल थ्रेड आवेदन तार्किक तेजी से हो जाएगा एक बहुप्रचारित आवेदन (या जैसा) के मुकाबले। चूंकि कंप्यूटर एक प्रोसेसर के साथ एक समय में एक चीज करने में सक्षम नहीं होता है, इसलिए यह संदर्भ स्विचिंग और पसंदों पर समय बर्बाद कर देगा। अभी तक इतना अच्छा है?
2) यदि आप एक 4 प्रोसेसर कंप्यूटर हैं, तो 4 धागे ज्यादातर संभावना तेजी से एकल थ्रेड की तुलना में इस के लिए किया जाएगा। सही? आपका कंप्यूटर अब एक समय में 4 संचालन कर सकता है, इसलिए यह आपके आवेदन को 4 धागे में विभाजित करने के लिए तार्किक है, और इसे 4 गणनाओं में से सबसे लंबे समय तक पूरा करना चाहिए। अभी तक अभी तक अच्छा है?
3) और अब वास्तविक भाग मैं उलझन में हूं - मैं अपने आवेदन को प्रोसेसर की संख्या (वास्तव में - कोर) की तुलना में अधिक धागे क्यों बना सकता हूं? मैंने प्रोग्राम किए और उन अनुप्रयोगों को देखा जो दसियों और सैकड़ों धागे बनाते हैं, लेकिन असल में - औसत कंप्यूटर औसत कंप्यूटर के लिए लगभग 8 है?
पीएस मैंने पहले ही यह पढ़ा है: Threading vs single thread लेकिन इसका जवाब शांत नहीं हुआ।
चीयर्स
इसी प्रकार का प्रश्न: http://stackoverflow.com/questions/503551/does-it-make-sense-to-spawn-more-than-one-thread-per-processor – user2314737