मैं एकल सूत्रण और बहु सूत्रण प्रोग्रामिंग के बीच अंतर की एक गलतफहमी है, तो मैं निम्नलिखित प्रश्न का उत्तर सब कुछ स्पष्ट बनाना चाहते बीच का अंतर।गलतफहमी एकल सूत्रण और बहु सूत्रण प्रोग्रामिंग
मान लीजिए 9 स्वतंत्र कार्य देखते हैं कि और मैं उन्हें एक एकल पिरोया कार्यक्रम और एक मल्टी-थ्रेडेड कार्यक्रम के साथ पूरा करने के लिए चाहते हैं।
एकल धागा:
- Execute task 1
- Execute task 2
- Execute task 3
- Execute task 4
- Execute task 5
- Execute task 6
- Execute task 7
- Execute task 8
- Execute task 9
मल्टी पिरोया:
Thread1: असल में यह कुछ इस तरह हो जाएगा
- Execute task 1
- Execute task 2
- Execute task 3
Thread2:
- Execute task 4
- Execute task 5
- Execute task 6
Thread3:
- Execute task 7
- Execute task 8
- Execute task 9
मैं समझता हूँ के रूप में, केवल एक धागा एक समय (सीपीयू मिल) पर निष्पादित किया जाएगा, और एक बार क्वांटम समाप्त हो गया है, धागा अनुसूचक होगा सीपीयू का समय किसी अन्य धागे को दें।
तो, जो कार्यक्रम पहले समाप्त हो जाएगी? क्या यह बहु थ्रेडेड प्रोग्राम (तार्किक रूप से) है? या यह सिंगल-थ्रेड प्रोग्राम है (चूंकि मल्टी-थ्रेडिंग में बहुत सारे संदर्भ-स्विचिंग हैं जो कुछ समय लेते हैं)? और क्यों? मैं की जरूरत है एक अच्छा स्पष्टीकरण :) कृपया
'कौन सा प्रोग्राम पहले खत्म होगा'? उत्तर: यह –
पर निर्भर करता है बहुत सी चीजें असीमित रूप से होती हैं, यहां तक कि एक ही CPU पर: मेमोरी फ़ेचिंग, डिस्क I/O, नेटवर्क I/O ... संदर्भ स्विच अक्सर "मजबूर टाइमआउट" के दौरान वरीयता के साथ होते हैं। वैसे भी, वास्तव में वास्तव में केवल एक सीपीयू कौन है? –
प्रश्न अपने वर्तमान रूप में असंभव है। क्या कार्य एक-दूसरे से स्वतंत्र हैं, या क्या वे पहले के कार्यों से परिणामों पर भरोसा करते हैं? कितने सीपीयू/कोर उपलब्ध हैं? क्या कार्य प्रोसेसर बाध्य हैं या I/O बाध्य हैं? समांतरता के लिए आदर्श परिस्थितियों में (एकाधिक सीपीयू/कोर, प्रोसेसर बाध्य, स्वतंत्र कार्य) बहुप्रचारित संस्करण * शायद * तेज होगा। लेकिन शायद नहीं। – dlev