अतुल्यकालिक बनाम तुल्यकालिक निष्पादन, इसका वास्तव में क्या मतलब है? [बन्द है]


1186

अतुल्यकालिक और तुल्यकालिक निष्पादन के बीच अंतर क्या है?


... या "अनुक्रमिक बनाम समानांतर" निष्पादन ... हालांकि सही समानता को कई कोर की आवश्यकता होती है, अन्यथा यह तार्किक रूप से पारस्परिक है।
Samis

8
मैं दोनों शब्दों को भ्रमित करता था, और जिस तरह से मैंने अंतर को याद रखने के लिए किया था वह " A JAX" में पहला "A" है जो अतुल्यकालिक के लिए खड़ा है, जावास्क्रिप्ट में जब आप AJAX के साथ एक लूप में अनुरोध करते हैं तो वे इंतजार नहीं करते प्रत्येक अन्य या प्रक्रिया को ब्लॉक करते हैं, क्योंकि ब्राउज़र एक जमे हुए वेबसाइट के साथ उपयोगकर्ता के अनुभव को प्रभावित नहीं करना चाहता है, पिछले अनुरोध की प्रतिक्रिया की प्रतीक्षा किए बिना सभी अनुरोध लगभग एक ही समय में भेजे जाते हैं। यह अतुल्यकालिक है
लेखाकार

जवाबों:


1747

जब आप किसी चीज़ को सिंक्रोनाइज़ करते हैं, तो आप दूसरे काम पर जाने से पहले उसके खत्म होने का इंतज़ार करते हैं। जब आप कुछ अतुल्यकालिक रूप से निष्पादित करते हैं, तो आप इसे पूरा करने से पहले किसी अन्य कार्य के लिए आगे बढ़ सकते हैं।

यह कहा जा रहा है, कंप्यूटर के संदर्भ में यह एक प्रक्रिया या कार्य को किसी अन्य "थ्रेड" को निष्पादित करने में अनुवाद करता है। एक थ्रेड कमांड (कोड का एक ब्लॉक) की एक श्रृंखला है जो काम की एक इकाई के रूप में मौजूद है। ऑपरेटिंग सिस्टम कई थ्रेड्स का प्रबंधन कर सकता है और किसी कार्य को करने के लिए इसे चालू करने के लिए दूसरे थ्रेड पर जाने से पहले प्रोसेसर थ्रेड का एक टुकड़ा ("स्लाइस") असाइन कर सकता है। इसके मूल में (दंड को क्षमा करें), एक प्रोसेसर केवल एक कमांड निष्पादित कर सकता है, इसमें एक समय में दो काम करने की कोई अवधारणा नहीं है। ऑपरेटिंग सिस्टम विभिन्न थ्रेड्स के लिए समय के स्लाइस को आवंटित करके इसका अनुकरण करता है।

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

अतुल्यकालिक प्रोग्रामिंग एक जटिल विषय है क्योंकि शब्दार्थ एक साथ टाई करते हैं जब आप उन्हें एक ही समय में कर सकते हैं। इस विषय पर कई लेख और पुस्तकें हैं; एक नज़र देख लो!


246
मुझे पूरी तरह से भ्रमित करता है कि सिंक्रोनस का अर्थ है "एक ही समय में", फिर भी जब ऊपर के अर्थ में उपयोग किया जाता है, तो इसका मतलब है अनुक्रमिक , और अतुल्यकालिक का अर्थ है "एक ही समय में नहीं" ... ?? क्या कोई इस संघर्ष की व्याख्या कर सकता है?
डेमियन रोश

45
@Zenph: इस संदर्भ में, कोड का एक संपूर्ण ब्लॉक वह है जिससे हम संबंधित हैं। सिंक्रोनस का मतलब है कि ब्लॉक को एक ही समय में निष्पादित किया जाता है (हालांकि, हां, घटकों को क्रमिक रूप से निष्पादित किया जाता है)। एसिंक्रोनस का मतलब है कि ब्लॉक को एक ही समय में निष्पादित नहीं किया गया है।
एडम रॉबिन्सन

8
एसिंक्रोनस निष्पादन तब भी होता है जब कोई प्रोग्राम किसी संदेश को कतार में भेजता है (जैसा कि संदेश प्रणाली में, जैसे कि ActiveMQ, WebSphere MQ, HornetQ, MSMQ, आदि)। इस स्थिति में, एसिंक्रोनस कॉल में ओएस स्तर पर मल्टीथ्रेड प्रोग्रामिंग या हैंडलिंग संगामिति शामिल नहीं है।
पाउलो मर्सन

287
अजीब तरह से पर्याप्त "सिंक्रोनस" का अर्थ है "एक ही घड़ी का उपयोग करना" इसलिए जब दो निर्देश समकालिक होते हैं तो वे एक ही घड़ी का उपयोग करते हैं और एक के बाद एक होना चाहिए। "एसिंक्रोनस" का अर्थ है "एक ही घड़ी का उपयोग नहीं करना" इसलिए निर्देश एक-दूसरे के साथ कदम रखने से चिंतित नहीं हैं। इसलिए यह पीछे की ओर दिखता है, यह शब्द एक दूसरे के लिए निर्देश संबंध का जिक्र नहीं कर रहा है। यह घड़ी के प्रत्येक निर्देश संबंध का जिक्र है। उम्मीद है की वो मदद करदे।
टॉम पैडीला

14
शर्तें इंजीनियरिंग से आती हैं। en.wikipedia.org/wiki/Asynchronous_system
टॉम पैडीला

1150

बहुउद्देश्यीय / अतुल्यकालिक बहु संख्या के साथ क्या करना है।

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

तुल्यकालिक (एक धागा):

1 thread ->   |<---A---->||<----B---------->||<------C----->|

सिंक्रोनस (मल्टी थ्रेडेड):

thread A -> |<---A---->|   
                        \  
thread B ------------>   ->|<----B---------->|   
                                              \   
thread C ---------------------------------->   ->|<------C----->| 

अतुल्यकालिक (एक धागा):

         A-Start ------------------------------------------ A-End   
           | B-Start -----------------------------------------|--- B-End   
           |    |      C-Start ------------------- C-End      |      |   
           |    |       |                           |         |      |
           V    V       V                           V         V      V      
1 thread->|<-A-|<--B---|<-C-|-A-|-C-|--A--|-B-|--C-->|---A---->|--B-->| 

अतुल्यकालिक (बहु-थ्रेडेड):

 thread A ->     |<---A---->|
 thread B ----->     |<----B---------->| 
 thread C --------->     |<------C--------->|
  • वर्ण A, B, C द्वारा आरंभ और अंत के बिंदु <, >वर्ण।
  • सीपीयू समय स्लाइस ऊर्ध्वाधर सलाखों द्वारा प्रतिनिधित्व किया |

तकनीकी रूप से, तुल्यकालिक / अतुल्यकालिक की अवधारणा का वास्तव में धागों से कोई लेना-देना नहीं है । हालांकि, सामान्य तौर पर, एक ही धागे पर चलने वाले अतुल्यकालिक कार्यों को खोजने के लिए यह असामान्य है, यह संभव है, (उदाहरणों के लिए नीचे देखें) और अलग-अलग थ्रेड्स पर सिंक्रोनाइज़ करने वाले दो या अधिक कार्यों को खोजना आम है ... नहीं, अवधारणा सिंक्रोनस / एसिंक्रोनस को पूरी तरह से करना है कि दूसरे या पहले कार्य को पूरा किया जा सकता है या नहीं (दूसरा) कार्य पूरा होने से पहले शुरू किया जा सकता है या नहीं। बस इतना ही। क्या थ्रेड (या थ्रेड), या प्रक्रियाएं, या सीपीयू, या वास्तव में, क्या हार्डवेयर, कार्य [एस] निष्पादित किए गए प्रासंगिक नहीं हैं। दरअसल, इस बिंदु को बनाने के लिए मैंने इसे दिखाने के लिए ग्राफिक्स को संपादित किया है।


ASISSCHRONOUS उदाहरण:

कई इंजीनियरिंग समस्याओं को हल करने में, सॉफ्टवेयर को समग्र समस्या को कई अलग-अलग कार्यों में विभाजित करने और फिर उन्हें अतुल्यकालिक रूप से निष्पादित करने के लिए डिज़ाइन किया गया है। मैट्रिक्स, या एक परिमित तत्व विश्लेषण समस्या का समाधान करना, अच्छे उदाहरण हैं। कंप्यूटिंग में, एक सूची को क्रमबद्ध करना एक उदाहरण है। उदाहरण के लिए, Quicksort रूटीन, सूची को दो सूचियों में विभाजित करता है और उनमें से प्रत्येक पर एक quicksort करता है, खुद को (quicksort) पुनरावर्ती कहता है। उपरोक्त दोनों उदाहरणों में, दोनों कार्यों को (और अक्सर) असिंक्रोनस रूप से निष्पादित किया जा सकता है। उन्हें अलग-अलग थ्रेड्स पर होने की आवश्यकता नहीं है। यहां तक ​​कि एक सीपीयू के साथ एक मशीन और निष्पादन के केवल एक धागे को पहले एक काम पूरा होने से पहले दूसरे कार्य की प्रक्रिया शुरू करने के लिए कोडित किया जा सकता है। एकमात्र मानदंड यह है कि एक कार्य के परिणाम दूसरे कार्य के लिए आवश्यक नहीं हैं। जब तक कार्यों की शुरुआत और समाप्ति समय ओवरलैप होता है, (केवल तभी संभव है जब न तो आउटपुट को दूसरे के लिए इनपुट के रूप में आवश्यक है), उन्हें अतुल्यकालिक रूप से निष्पादित किया जा रहा है, चाहे कितने थ्रेड उपयोग में हों।

लक्षण उदाहरण:

कई कार्यों से युक्त कोई भी प्रक्रिया जहां कार्यों को अनुक्रम में निष्पादित किया जाना चाहिए, लेकिन किसी अन्य मशीन (Fetch और / या डेटा को अपडेट करने, वित्तीय सेवा आदि से स्टॉक उद्धरण प्राप्त करने पर) निष्पादित किया जाना चाहिए। यदि यह एक अलग मशीन पर है, तो यह एक अलग थ्रेड पर है, चाहे सिंक्रोनस या एसिंक्रोनस।


92
क्यों दुनिया में शब्दों का मतलब है कंप्यूटर में अलग-अलग चीजें ... हमेशा मुझे इस पर वापस आना छोड़ दो ... शब्दकोश से .. तुल्यकालिक: एक ही समय में होने वाली। अतुल्यकालिक: एक ही समय में नहीं हो रहा है।
मुहम्मद उमर

17
लेकिन जैसा कि आप कंप्यूटर में देख सकते हैं, इसका मतलब है विपरीत
मुहम्मद उमर

5
हो सकता है कि नामकरण अन्य कार्यों के पूरा होने के साथ कार्यों की दीक्षा "सिंक्रनाइज़" है या नहीं?
चार्ल्स ब्रेटाना

11
@MuhammadUmer: कंप्यूटर की दुनिया में, एक ही समय में होने को कंसीडर कहा जाता है।
रॉय लिंग

5
IMHO, ये चित्र सभी कार्यों के सिंक्रोनस बनाम एसाइक्रोनस निष्पादन का वर्णन नहीं करते हैं उदाहरण के लिए, दूसरी तस्वीर का अर्थ है कि अतुल्यकालिक कार्यों के लिए कई थ्रेड्स की आवश्यकता होती है। दरअसल, ऐसा नहीं है। और उस कार्य को समानांतर में चलाना होता है, जिसकी आवश्यकता भी नहीं है। या, "सिंक्रोनस" के लिए तस्वीर बहुत अच्छी तरह से दिखाती है कि कार्यों को किस तरह से अतुल्यकालिक रूप से कुछ कॉल-साइट के रूप में भेजा गया है और अब एक सीरियल टास्क शेड्यूलर में निष्पादित होता है;) IMO, चित्र भ्रामक हैं।
काउचडॉलर

641

सरल शब्दों में:

तुल्यकालिक

आप फिल्म का टिकट पाने के लिए कतार में हैं। आप तब तक एक नहीं हो सकते जब तक कि आपके सामने हर कोई एक न हो जाए, और वही आपके पीछे कतार में लगे लोगों पर लागू होता है।

अतुल्यकालिक

आप कई अन्य लोगों के साथ एक रेस्तरां में हैं। आप अपना खाना ऑर्डर करें। अन्य लोग भी अपने भोजन का ऑर्डर कर सकते हैं, इससे पहले कि वे ऑर्डर करने से पहले आपके भोजन के पकने की प्रतीक्षा न करें और आपको परोसें। किचन रेस्तरां में कर्मचारी लगातार खाना बना रहे हैं, परोस रहे हैं और ऑर्डर ले रहे हैं। खाना बनाते ही लोगों को खाना परोसा जाएगा।


10
अगर कोई सेब के साथ तुलना में सेब चाहता है; यदि आप चाहते थे कि रेस्तरां का परिदृश्य समकालिक हो, तो जब आप भोजन का आदेश देते हैं, तो रेस्तरां में अन्य सभी को अपने भोजन के लिए आने से पहले अपने भोजन का ऑर्डर देने आदि के लिए इंतजार करना होगा। अब ऐसा लगता है कि वास्तव में ऐसा होना चाहिए। लेकिन कंप्यूटिंग की दुनिया में यह परिदृश्य उपयोगी हो सकता है। प्रत्येक ग्राहक का कहना है कि वे क्या चाहते हैं, तय करें और इसके बजाय यह देखना चाहते हैं कि पिछले ग्राहक क्या चाहते हैं या नहीं, यह तय करने का आदेश देता है, तो यह समझ में आता है कि उन्हें आदेश देने से पहले भोजन का इंतजार करना होगा।
फॉनिक्स

बस जोड़ने के लिए ... यह ऐसा हो सकता है कि परिचालन अतुल्यकालिक संचालन में एक कतार की तरह निष्पादित हो ... लेकिन यह अनिवार्य नहीं है।
श्रीकांत करुमनघाट

5
बहुत ही सरल और वास्तविक जीवन उदाहरण
मनीष

अपने उदाहरण को और भी आगे बढ़ाने के लिए, वे टिकट बेचने के लिए कई द्वार पर विचार कर सकते हैं। इसलिए, प्रत्येक पंक्ति दूसरी पंक्ति से असिंक्रोनस रूप से काम कर सकती है लेकिन समकालिक रूप से!
सईद अहदीयन

334

सादृश्य के माध्यम से सरल व्याख्या

तुल्यकालिक निष्पादन

मेरा बॉस एक व्यस्त आदमी है। वह मुझे कोड लिखने के लिए कहता है। मैं उससे कहता हूं: ठीक है। मैं शुरू हो जाता हूं और वह मुझे एक गिद्ध की तरह देख रहा है, मेरे पीछे खड़ा है, मेरे कंधे से। मुझे पसंद है "यार, डब्ल्यूटीएफ: आप इसे खत्म करने के दौरान क्यों नहीं जाते और कुछ करते हैं?"

वह ऐसा है: "नहीं, मैं यहीं इंतजार कर रहा हूं जब तक आप खत्म नहीं करते।" यह समकालिक है।

अतुल्यकालिक निष्पादन

बॉस मुझे यह करने के लिए कहता है, और मेरे काम के लिए वहीं इंतजार करने के बजाय, बॉस बंद हो जाता है और अन्य कार्य करता है। जब मैं अपना काम पूरा कर लेता हूं तो मैं बस अपने बॉस को रिपोर्ट करता हूं और कहता हूं: "मैं पूरा हो गया हूं!" यह अतुल्यकालिक निष्पादन है।

(मेरी सलाह लें: अपने पीछे बॉस के साथ काम करें।)


28
जब मैंने इसे इस्तीफे के रूप में लिया, तो मैं भी ... बहुत मजेदार हूं।
डेड्रिक

91

सिंक्रोनस निष्पादन का अर्थ है निष्पादन एकल श्रृंखला में होता है। A->B->C->D। अगर आप उन रूटीन को बुला रहे हैं, Aचलाएंगे, फिर खत्म Bकरेंगे, फिर शुरू करेंगे, फिर खत्म Cकरेंगे , फिर शुरू करेंगे, आदि।

एसिंक्रोनस निष्पादन के साथ , आप एक दिनचर्या शुरू करते हैं, और जब आप अपना अगला शुरू करते हैं, तो इसे पृष्ठभूमि में चलने दें, फिर किसी बिंदु पर, "समाप्त होने के लिए प्रतीक्षा करें" कहें। यह अधिक पसंद है:

समाप्त करने के लिए A->B->C->D->प्रतीक्षा प्रारंभ करेंA

लाभ यह है कि आप पर अमल कर सकते हैं B, Cऔर या Dजबकि Aताकि आप अपने संसाधनों का बेहतर लाभ उठाने और कम "रुक जाता है" या "प्रतीक्षा करता है" हो सकता है, अभी भी (एक अलग थ्रेड पर, पृष्ठभूमि में) चल रहा है।


@ रीड कोपसी ...... इतनी अच्छी व्याख्या के लिए धन्यवाद ..... बस Async-Exec पर कुछ और जानकारी चाहते थे ...... Async Exec में आपके उत्तर के आधार पर .... प्रारंभ A-> B-> C-> D-> A के खत्म होने का इंतजार करें ... इसलिए A, B, C, D एक समय में शुरू होता है ...... और वे A के खत्म होने का इंतजार करते हैं। B केवल A के समाप्त होने के बाद समाप्त होगा, और C के बाद B और इतने पर ......? या बी पहले खत्म कर सकते हैं और फिर ए खत्म कर सकते हैं?
देवराठ

8
@Devrath परिचालन किसी भी क्रम में समाप्त हो सकता है।
रीड कोपसे जूल 22'13

59

संक्षेप में, तुल्यकालन दो या अधिक प्रक्रियाओं के आरंभ और अंत बिंदुओं को संदर्भित करता है , न कि उनके निष्पादन को । इस उदाहरण में, प्रोसेस ए का समापन बिंदु प्रोसेस बी के शुरुआती बिंदु के साथ सिंक्रनाइज़ किया गया है:

तुल्यकालिक
   | -------- एक -------- |
                     | -------- बी -------- |

अतुल्यकालिक प्रक्रियाओं, दूसरे हाथ पर, है उनके प्रारंभ और अंतिम बिंदुओं सिंक्रनाइज़ है:

अतुल्यकालिक
   | -------- एक -------- |
         | -------- बी -------- |

जहां प्रोसेस ए ओवरलैप्स प्रोसेस बी है, वे समवर्ती या सिंक्रोनाइज (डिक्शनरी परिभाषा) चला रहे हैं , इसलिए भ्रम है।

अद्यतन: चार्ल्स ब्रेटाना ने अपने उत्तर में सुधार किया , इसलिए यह उत्तर अब केवल एक सरल (संभावित ओवरसिप्लाइज्ड) mnemonic है।


2
चार्ल्स ब्रेटाना के उत्तर की प्रति
दिनेश सैनी

2
@ दिनेशसैनी - मेरा आरेख थोड़ा अलग है। स्पष्टता के लिए, मैंने दोनों मामलों में ए को बी के शीर्ष पर रखा, इस बात पर जोर दिया कि क्या उनकी शुरुआत और समापन बिंदु सिंक्रनाइज़ हैं। चार्ल्स ब्रेटाना का आरेख कुछ भी "सिंकिंग" किए बिना अनुक्रम में तुल्यकालिक प्रक्रियाओं को रखता है। (मैं इसे "सुधार" करने के लिए उनके उत्तर के नीचे टिप्पणी करने जा रहा था, लेकिन यह महसूस किया कि नए आरेख को दिखाना आसान होगा।)
entr0p3te

महान चित्र। मुझे लगता है कि शीर्ष एक SYNC को कॉल करने का तरीका है, यह है कि शीर्ष आरेख में A का प्रारंभ और अंत प्रभावी रूप से एक ही समय में होता है, इस अर्थ में कि कोई अन्य घटना हस्तक्षेप नहीं करती है, या A के पूरा होने में हस्तक्षेप कर सकती है। सिंक अलगाव में एक एकल कार्य को संदर्भित कर सकता है, जैसे कि सीपीयू रजिस्टरों को जोड़ना, जिनकी शुरुआत और अंत इतने करीब हैं, जैसा कि वास्तव में शब्दकोश-तुल्यकालिक होना चाहिए।
डीन रैडक्लिफ

55

सिंक्रोनस का अर्थ है कि कॉलर प्रतिक्रिया या पूर्ण होने की प्रतीक्षा करता है, अतुल्यकालिक कि कॉलर जारी रहता है और एक प्रतिक्रिया बाद में आती है (यदि लागू हो)।

उदहारण के लिए:

    static void Main(string[] args)
    {
        Console.WriteLine("Before call");
        doSomething();
        Console.WriteLine("After call");
    }

    private static void doSomething()
    {
        Console.WriteLine("In call");
    }

यह हमेशा अलग रहेगा:

Before call
In call
After call

लेकिन अगर हम doSomething अतुल्यकालिक (इसे करने के कई तरीके) बनाते हैं, तो आउटपुट बन सकता है :

Before call
After call
In call

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


34

मुझे लगता है कि यह स्पष्टीकरण के बारे में थोड़ा गोल है, लेकिन फिर भी यह वास्तविक जीवन उदाहरण का उपयोग करके स्पष्ट करता है।

छोटा उदाहरण:

मान लें कि ऑडियो चलाने में तीन चरण शामिल हैं:

  1. हार्डडिस्क से संपीड़ित गीत प्राप्त करना
  2. ऑडियो को डिकम्प्रेस करें।
  3. असम्पीडित ऑडियो चलाएं।

यदि आपका ऑडियो प्लेयर हर गाने के लिए क्रमिक रूप से 1,2,3 कदम रखता है तो यह सिंक्रोनस है। गीत को सुनने के लिए आपको कुछ समय तक इंतजार करना होगा जब तक कि गीत वास्तव में प्रचलित और विघटित न हो जाए।

यदि आपका ऑडियो प्लेयर एक दूसरे से 1,2,3 स्वतंत्र है, तो यह अतुल्यकालिक है। अर्थात। ऑडियो 1 (चरण 3) को चलाते समय, अगर यह ऑडियो 3 को हार्डडिस्क से समानांतर (चरण 1) में लाता है और यह समानांतर में ऑडियो 2 को डिकम्प्रेस करता है। (चरण 2) आप गाने को सुनने के लिए बहुत इंतजार करेंगे और बिना डीकंप्रेस और डिकम्प्रेस के लिए इंतजार करेंगे।


32

वर्तमान कार्य के संबंध में सिंक और async संचालन निष्पादन आदेश के बारे में एक नया कार्य है । एक मेज पर दो कार्य: वर्तमान कार्य और एक नया कार्य

तुल्यकालिक (अवरुद्ध) - तात्पर्य है कि कार्यों को एक-एक करके निष्पादित किया जाएगा। अगला कार्य उसके पिछले कार्य के समाप्त होने के बाद ही शुरू किया जाता है। समाप्त Task 2होने तक शुरू नहीं किया Task 1जाता है

एसिंक्रोनस (गैर-अवरुद्ध) - तात्पर्य है कि कोड को निष्पादित करने और बाद में परिणाम के बारे में सूचित करने के वादे के साथ कार्य रिटर्न नियंत्रण तुरंत (जैसे कॉलबैक, सुविधा)। समाप्त नहीं होने पर Task 2भी निष्पादित किया Task 1जाता है

एसओ जवाब सिंक और एसिंक्स के बारे में : आईओएस में , एंड्रॉइड में


समकालिक बहु-थ्रेडेड उदाहरण में आरेख समवर्ती रूप से थ्रेडिंग निष्पादित करने के लिए प्रकट होता है?
Samis

@ sαmos sris आप एक्स अक्ष की तरह थ्रेड पर विचार कर सकते हैं जो समयरेखा को इंगित करता है
yoAlex5

एक्स-एक्सिस पारंपरिक रूप से एक स्थानिक आयाम के रूप में उपयोग किया जाता है; समय के लिए t- अक्ष - एल्गोरिथ्म जटिलता के विश्लेषण में पाया गया एक महत्वपूर्ण अंतर।
समिस

23

बस कहा अतुल्यकालिक निष्पादन पृष्ठभूमि में सामान कर रहा है।

उदाहरण के लिए यदि आप इंटरनेट से कोई फ़ाइल डाउनलोड करना चाहते हैं, तो आप ऐसा करने के लिए एक सिंक्रोनस फ़ंक्शन का उपयोग कर सकते हैं, लेकिन यह आपके थ्रेड को तब तक रोक देगा, जब तक फ़ाइल डाउनलोड नहीं हो जाती। यह आपके एप्लिकेशन को किसी भी उपयोगकर्ता इनपुट के प्रति अनुत्तरदायी बना सकता है।

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


1
आपका उदाहरण कैसे तेज होने वाला है। अंत में आप फ़ाइल को तब तक नहीं चला सकते जब तक कि इसे डाउनलोड करने की अवधि पूरी न हो जाए। क्या तुम समझा सकते हो? मुझे लगता है कि मैं तब async समझ नहीं आता और यह शायद मैं हूँ, लेकिन अन्य प्रक्रिया चल रही है (डाउनलोड प्राप्त करने के दौरान) अन्य कदम या प्रक्रिया क्या होगी? मेरा मतलब है कि आप तब तक क्या कर सकते हैं जब तक आप अपने ऐप में उस async प्रक्रिया को वापस (डाउनलोड) प्राप्त नहीं कर लेते ... मुझे यह नहीं मिलता है। तो क्या, आपको अभी भी उपयोगकर्ता को किसी भी स्थिति में किसी प्रकार की प्रतीक्षा प्रणाली नहीं मैटर दिखाना होगा?
पॉजिटिव जी

4
यह तेज नहीं है। यह मुख्य धागे को अवरुद्ध नहीं करने के बारे में है, ताकि यह अन्य प्रकार के उपयोगकर्ता इनपुट को संसाधित कर सके। उदाहरण के लिए उपयोगकर्ता डाउनलोड को रद्द करना चाहता है या एक साथ दूसरी फ़ाइल डाउनलोड करना शुरू कर सकता है।
मिचेल प्याकोवस्की

19

वास्तव में सरल उदाहरण के रूप में,

तुल्यकालिक

कल्पना कीजिए कि 3 स्कूली छात्रों ने एक सड़क पर एक रिले दौड़ चलाने का निर्देश दिया।

1 छात्र उसे दी गई दूरी को चलाता है, रोकता है और 2 के लिए बैटन पास करता है। किसी और ने नहीं चलाया।

1------>
        2.
                3.

जब दूसरा छात्र बैटन को पुनः प्राप्त करता है, तो वह अपनी दी गई दूरी को चलाना शुरू कर देती है।

      1.
        2------>
                3.

2 वीं की छात्रा ने अपने फावड़े को खोल दिया। अब वह बंद हो गया है और फिर से बांध रहा है। इस वजह से, 2 के अंतिम समय को बढ़ा दिया गया है और तीसरे के शुरुआती समय में देरी हो गई है।

      1.
        --2.--->
                3.

यह पैटर्न तब तक जारी रहता है जब तक कि 3rd, बैटन को 2nd से पुनः प्राप्त कर लेता है और दौड़ पूरी कर लेता है।

अतुल्यकालिक

बस एक ही सड़क पर चलने वाले 10 यादृच्छिक लोगों की कल्पना करो। वे बिल्कुल कतार में नहीं हैं, बस बेतरतीब ढंग से सड़क पर अलग-अलग जगहों पर चल रहे हैं।

2 वें व्यक्ति की शील अस्वस्थ हो गई। वह उसे फिर से बांधने के लिए रुक गई।

लेकिन कोई भी उसे बांधने के लिए इंतजार नहीं कर रहा है। बाकी सभी अभी भी उसी तरह से चल रहे हैं जैसा उन्होंने पहले किया था, उसी गति में।

10-->    9-->
   8--> 7-->   6-->
 5-->     4-->
1-->   2.    3-->

18

मैंने इसे समझाने के लिए एक gif बनाया, आशा है कि सहायक होगा: देखो, पंक्ति 3 अतुल्यकालिक है और अन्य तुल्यकालिक हैं। पंक्ति 3 से पहले की सभी पंक्तियों को तब तक इंतजार करना चाहिए जब तक कि रेखा अपना काम पूरा न कर ले, लेकिन पंक्ति 3 अतुल्यकालिक होने के कारण, अगली पंक्ति (पंक्ति 4), पंक्ति 3 की प्रतीक्षा न करें, लेकिन पंक्ति 5 को अपना कार्य समाप्त करने के लिए पंक्ति 4 की प्रतीक्षा करनी चाहिए, और लाइन 6 को लाइन 5 और 7 के लिए 6 के लिए इंतजार करना चाहिए, क्योंकि लाइन 4,5,6,7 अतुल्यकालिक नहीं हैं। लाइन 3 एसिंक्रोनस है और अन्य सिंक्रोनस हैं


12

किसी अनुक्रम को निष्पादित करते समय जैसे: a> b> c> d>, अगर हमें निष्पादन के बीच में विफलता मिलती है जैसे:

a
b
c
fail

फिर हम शुरुआत से फिर से शुरू करते हैं:

a
b
c
d

यह समकालिक है

यदि, हालांकि, हमारे पास निष्पादित करने के लिए एक ही अनुक्रम है: a> b> c> d>, और हमारे बीच में विफलता है:

a
b
c
fail

... लेकिन शुरुआत से फिर से शुरू करने के बजाय, हम फिर से विफलता के बिंदु से शुरू करते हैं:

c
d

... यह अतुल्यकालिक के रूप में जाना जाता है।


1
क्या आप अपने उदाहरणों को और अधिक संदर्भ प्रदान करके अपने अर्थ में अधिक सटीक हो सकते हैं
krichard

5
यह उत्तर केवल सही नहीं है।
user207421

7

आप समानांतर बनाम श्रृंखला के साथ सिंक्रोनस को भ्रमित कर रहे हैं। एक ही समय में तुल्यकालिक सभी। सिंक्रोनाइज्ड का मतलब प्रत्येक ओथेरे से संबंधित है जो श्रृंखला में या एक निश्चित अंतराल पर हो सकता है। जबकि कार्यक्रम सभी कर रहा है, यह श्रृंखला में चल रहा है। एक शब्दकोश प्राप्त करें ... यही कारण है कि हमारे पास चाय है। आपने चाय पी या मीठी चाय पी।


3
दरअसल, "सिंक्रनाइज़" निर्देशों और घड़ी के बीच संबंध को संदर्भित करता है। निर्देशों के बीच संबंध खुद नहीं। यही कारण है कि यह पीछे की ओर "तुल्यकालिक" दिखता है वास्तव में एक के बाद एक का मतलब है: लेकिन निर्देश घड़ी के लिए संकेत हैं। "एसिंक्रोनस" का अर्थ है "किसी भी समय, मुझे परवाह नहीं है कि ऐसा कब होता है": निर्देशों को घड़ी से सिंक्रनाइज़ करने की आवश्यकता नहीं है। हां, एक शब्दकोश परिभाषा है, लेकिन आपको यह सुनिश्चित करना चाहिए कि आप सही स्थिति को परिभाषित कर रहे हैं।
टॉम पैडीला

1
तुल्यकालिक करता नहीं कंप्यूटिंग में 'एक ही समय में सभी' मतलब है। आप चाय और मीठी चाय के साथ तुल्यकालिक, और 'समानांतर बनाम श्रृंखला' के साथ सिंक्रनाइज़ेशन को भ्रमित कर रहे हैं। उत्तर कोई मायने नहीं रखता है।
user207421

7

सिंक्रोनस मूल रूप से इसका मतलब है कि आप एक समय में केवल एक चीज को निष्पादित कर सकते हैं। एसिंक्रोनस का मतलब है कि आप एक समय में कई चीजों को निष्पादित कर सकते हैं और अगले एक पर जाने के लिए आपको वर्तमान चीज को निष्पादित करने की आवश्यकता नहीं है।


एक ही समय में निष्पादित कई चीजों को एसिंक्रोनस के बजाय मल्टीथ्रेडिंग नहीं कहा जाता है।
श्रीकांत करुमनघाट

7

नाश्ते बनाने के लिए निर्देशों का एक उदाहरण का उपयोग करें

  1. एक कप कॉफी डालें।
  2. एक पैन गरम करें, फिर दो अंडे फ्राई करें।
  3. बेकन के तीन स्लाइस भूनें।
  4. ब्रेड के दो टुकड़ों को टोस्ट करें।
  5. टोस्ट में मक्खन और जैम डालें।
  6. एक गिलास संतरे का रस डालें।

यदि आपको खाना पकाने का अनुभव है, तो आप उन निर्देशों को अतुल्यकालिक रूप से निष्पादित करेंगे। आप अंडे के लिए पैन को गर्म करना शुरू कर देंगे, फिर बेकन को शुरू करेंगे। आप टोस्टर में ब्रेड डालेंगे, फिर अंडे शुरू करेंगे। प्रक्रिया के प्रत्येक चरण पर, आप एक कार्य शुरू करेंगे, फिर अपना ध्यान उन कार्यों की ओर लगाएँ जो आपके ध्यान के लिए तैयार हैं।

खाना पकाना नाश्ता अतुल्यकालिक काम का एक अच्छा उदाहरण है जो समानांतर नहीं है। एक व्यक्ति (या धागा) इन सभी कार्यों को संभाल सकता है। नाश्ते की उपमा को जारी रखते हुए, एक व्यक्ति पहले पूर्ण होने से पहले अगले कार्य को शुरू करके नाश्ते को समान रूप से बना सकता है। खाना पकाने में प्रगति होती है कि कोई इसे देख रहा है या नहीं। जैसे ही आप अंडे के लिए पैन को गर्म करना शुरू करते हैं, आप बेकन को भूनना शुरू कर सकते हैं। एक बार बेकन शुरू होने के बाद, आप रोटी को टोस्टर में डाल सकते हैं।

एक समानांतर एल्गोरिथ्म के लिए, आपको कई रसोइयों (या धागे) की आवश्यकता होगी। एक अंडे, एक बेकन, और इतने पर कर देगा। हर एक बस एक ही काम पर केंद्रित होगा। प्रत्येक रसोइया (या धागा) को बेकन के इंतजार में, या पॉप करने के लिए टोस्ट के लिए तैयार होने के इंतजार में समकालिक रूप से अवरुद्ध किया जाएगा।

अतुल्यकालिक प्रोग्रामिंग अवधारणाओं से संदर्भ


4

एक तुल्यकालिक ऑपरेशन कॉलर को लौटने से पहले अपना काम करता है।

एक अतुल्यकालिक ऑपरेशन कॉलर को लौटने के बाद अपना काम करता है (ज्यादातर या सभी)।


लिंक मर चुका है।
उम्मीद है कि

1

तुल्यकालिक निष्पादन की परिभाषा " एक ही समय में " के संबंध में (जो कभी-कभी भ्रमित होती है), इसे समझने का एक अच्छा तरीका यहां है:

तुल्यकालिक निष्पादन : कोड के एक ब्लॉक के भीतर सभी कार्यों को एक ही समय में निष्पादित किया जाता है।

अतुल्यकालिक निष्पादन : कोड के एक ब्लॉक के भीतर सभी कार्यों को एक ही समय में निष्पादित नहीं किया जाता है।


अगर आप 'प्रभावी रूप से एक ही समय में', या 'व्यावहारिक उद्देश्यों के लिए' कहे तो मैं इससे और अधिक सहमत हो जाऊंगा। मुझे लगता है कि यह गलत कथन गलत था कि चीजें वास्तव में एक ही समय पर हो रही हैं।
डीन रैडक्लिफ

1

मुझे लगता है कि यह सोचने का एक अच्छा तरीका एक क्लासिक रन रिले रेस है

सिंक्रोनस : एक ही टीम के सदस्यों की तरह प्रक्रियाएं, वे तब तक निष्पादित नहीं करेंगे जब तक कि उन्हें बैटन (पिछली प्रक्रिया / धावक के निष्पादन का अंत) प्राप्त नहीं हो जाता है और फिर भी वे सभी एक दूसरे के साथ सिंक में काम कर रहे हैं।

एसिंक्रोनस : जहां एक ही रिले रेस ट्रैक पर विभिन्न टीमों के सदस्यों की तरह प्रक्रियाएं होती हैं, वे एक दूसरे के साथ async, लेकिन एक ही दौड़ (समग्र कार्यक्रम निष्पादन) के भीतर चलेंगे और बंद हो जाएंगे।

क्या इस का कोई मतलब निकलता है?


1

सिंक्रोनाइज़ की एक अलग अंग्रेजी परिभाषा यहाँ है

समन्वय; जोड़ना।

मुझे लगता है कि यह "एक ही समय में हो रहा है" से बेहतर परिभाषा है। वह भी एक परिभाषा है, लेकिन मुझे नहीं लगता कि यह वह है जो कंप्यूटर विज्ञान में इसका उपयोग करने के तरीके को फिट करता है।

तो एक अतुल्यकालिक कार्य अन्य कार्यों के साथ समन्वित नहीं है, जबकि एक तुल्यकालिक कार्य आईएस अन्य कार्यों के साथ सह-समन्वित है, इसलिए एक दूसरे के शुरू होने से पहले पूरा हो जाता है।

यह कैसे हासिल किया जाता है यह एक अलग सवाल है।


0

सिंक्रोनस का अर्थ है कतार में एक-एक कार्य को अंजाम देना। मान लीजिए कि केवल एक वाहन है जिसे एक वाहन द्वारा एक गंतव्य तक पहुंचने के लिए मित्र के बीच साझा करने की आवश्यकता है।
अतुल्यकालिक मामले में प्रत्येक दोस्त किराए पर वाहन प्राप्त कर सकता है और अपने गंतव्य तक पहुंच सकता है।


0

हाँ एक ही समय में तुल्यकालिक का मतलब है, शाब्दिक अर्थ है, सभी एक साथ काम करना। दुनिया में कई मानव / वस्तुएं एक ही समय में कई काम कर सकते हैं, लेकिन अगर हम कंप्यूटर को देखें, तो यह सिंक्रोनस का अर्थ है जहां प्रक्रियाएं एक साथ काम करती हैं अर्थात प्रक्रियाएं एक दूसरे की वापसी पर निर्भर होती हैं और इसीलिए वे एक को क्रियान्वित करती हैं एक के बाद एक उचित क्रम में। जबकि अतुल्यकालिक का अर्थ है जहां प्रक्रियाएं एक साथ काम नहीं करती हैं, वे एक ही समय में काम कर सकती हैं (यदि मल्टीथ्रेड पर हैं), लेकिन स्वतंत्र रूप से काम करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.