Concurrency, Parallelism, Async, Non-blocking और ये Concepts
(black7375.tistory.com)सरल शब्दावली की व्यवस्थित समीक्षा से शुरुआत करते हुए, ग्राफिक्स और सेमीकंडक्टर तक व्यापक रूप से कवर किया गया है.
- शब्दावली
- Concurrency / Parallelism
- Async / Non-blocking
- Preemptive / Non-preemptive
- Operating System और Processor
- Operating System
- Processor
- Coroutine और Fiber
- Fiber
- Coroutine
- Generator, Async/Await, Continuation
- Generator
- Async / Await
- Continuation
- Promise और Future
- I/O Multiplexing
- Multiplexing
- Socket
- I/O models
- Ring Buffer, आधुनिक I/O models, LMAX Disruptor
- Ring Buffer
- आधुनिक I/O models
- LMAX Disruptor
- Synchronization primitives
- आवश्यकता
- Thread safety
- Spinlock
- Mutex
- Semaphore
- STM
- GIL
- अन्य script languages के approaches और Reactor/Proactor patterns
- Ractor (Ruby)
- Node.js (Reactor pattern)
- Proactor pattern
- CSP और Actor
- CSP
- Actor
- Green thread, goroutine और आधुनिक async runtime technologies
- Green thread
- आधुनिक CSP runtime
- आधुनिक Actor runtime
- Parallelism
- SIMD और pipelining
- OpenMP & MPI
- आधुनिक parallel techniques
- Lambda architecture
- GPU
- Pipeline और shader
- Monitor
- Buffering
- Vertical sync
- Frame pacing और beam racing
- Compositor
- Graphics API / library
- अन्य chips
- Overview
- DSP
- FPGA
- TPU
- संदर्भ
10 टिप्पणियां
मैं यह बात अनगिनत ब्लॉगों में बिल्कुल इसी तरह दोहराई हुई देख रहा हूँ, तो जिज्ञासा है कि इसका मूल स्रोत कहाँ है।
ज़्यादातर ब्लॉग एक-दूसरे को संदर्भित करने में ही व्यस्त हैं, इसलिए मूल लेख का अंदाज़ा लगाना मुश्किल था। जो कुछ मिला, उसमें IBM का AIO दस्तावेज़ ही था, लेकिन मुझे लगा कि यह शायद सिर्फ kernel I/O तक सीमित संदर्भ में ही बात कर रहा है। और यह भी सुना है कि यह वर्गीकरण अपने-आप में विवादित है।
क्या इसे कोई प्रामाणिक मानदंड माना जा सकता है?
सबसे पहले, synchronous/asynchronous को अगर circuit के आधार पर देखें तो ठीक रहेगा।
Synchronous circuit timing के लिए clock का उपयोग करते हैं, और asynchronous circuit event या किसी अन्य input से trigger होते हैं।
यानी, asynchronous API को भी उसी तरह callback आदि से trigger होने वाले तरीके के रूप में परिभाषित करना गलत नहीं होगा।
https://developer.mozilla.org/en-US/docs/…
Blocking/non-blocking API के लिए यह परिभाषा उपयुक्त है कि क्या किसी काम का इंतज़ार करना अनिवार्य है या नहीं।
हालांकि, इंतज़ार न करने के लिए ऐसा implementation होना चाहिए जिसमें call किया गया function control अपने पास रखे, इसलिए शायद इसे उसी तरह ज़्यादा समझाया जाता है।
https://nodejs.org/en/docs/guides/blocking-vs-non-blocking/
मैंने इसे संक्षेप में आगे बढ़ने के लिए छोड़ दिया था, लेकिन अब इस सामग्री को अतिरिक्त रूप से शामिल करने की कोशिश करूँगा।
आपने जो कहा, उससे मैं पूरी तरह सहमत हूँ। लेकिन इन दो मानदंड-अक्षों को एक quadrant वाले plane पर दिखाना चाहिए या नहीं, क्या ऐसा किया जा सकता है, और क्या इन्हें उचित रूप से अलग किया जा सकता है—इस बारे में अब भी मुझे पूरा भरोसा नहीं है। मुझे तो Blocking और Sync वैचारिक रूप से 90% संदर्भ साझा करते हुए लगते हैं। Non-Blocking और Async के मामले में भी यही बात लागू होती है।
Blocking-Sync और Non-Blocking-Async का साथ में इस्तेमाल अक्सर होता है, लेकिन कुछ मामलों में इन्हें अलग करके देखना ज़रूरी होता है।
इसी वजह से मुझे लगता है कि इन्हें अलग-अलग करके इस्तेमाल करना ही सही है।
आपके दिए गए उदाहरणों की मुझे लगभग समझ ही नहीं है, इसलिए शायद उतनी सहमति महसूस नहीं हो रही है।
https://incredible-larva.tistory.com/entry/IO-Multiplexing-Topabogi-1bu इस लेख में इसे नीचे की तरह समझाया गया है:
इस बारे में आपकी क्या राय है, यह जानना चाहता हूँ। सच कहूँ तो, इस बिंदु पर आकर मुझे लगने लगा कि यह 2x2 classification अब अर्थहीन है। लगता है domain और perspective के हिसाब से इसकी व्याख्या अलग-अलग हो जाती है।
वाह, बहुत बढ़िया सामग्री है, धन्यवाद।
बहुत अच्छा लगा पढ़कर!
स्क्रोल का तो कोई अंत ही नहीं है d d
लगता है कि इसी तरह के विषयों पर आधारित "7 तरह के समकालिकता मॉडल" नाम की किताब भी एक बार पढ़ने लायक है।
विषयसूची की तुलना की तो काफ़ी मिलती-जुलती लगी।
अच्छी किताब लगती है।