Eşzamanlılık, Paralellik, Asenkroni, Non-blocking ve Kavramlar
(black7375.tistory.com)Basit bir terim derlemesiyle başlayıp grafiklerden yarı iletkenlere kadar geniş bir yelpazeyi ele aldık.
- Terimler
- Eşzamanlılık / Paralellik
- Asenkroni / Non-blocking
- Preemptive / Non-preemptive
- İşletim sistemi ve işlemci
- İşletim sistemi
- İşlemci
- Coroutine ve fiber
- Fiber
- Coroutine
- Generator, Async/Await, continuation
- Generator
- Async / Await
- Continuation
- Promise ve Future
- I/O multiplexing
- Multiplexing
- Socket
- I/O modelleri
- Ring buffer, modern I/O modelleri, LMAX Disruptor
- Ring buffer
- Modern I/O modelleri
- LMAX Disruptor
- Senkronizasyon primitive'leri
- Gereklilik
- Thread safety
- Spinlock
- Mutex
- Semaphore
- STM
- GIL
- Diğer betik dillerinin yaklaşımları ve Reactor/Proactor desenleri
- Ractor (Ruby)
- Node.js (Reactor deseni)
- Proactor deseni
- CSP ve aktör
- CSP
- Aktör
- Green thread, goroutine ve modern asenkron runtime teknolojileri
- Green thread
- Modern CSP runtime'ları
- Modern aktör runtime'ları
- Paralellik
- SIMD ve pipelining
- OpenMP & MPI
- Modern paralellik teknikleri
- Lambda mimarisi
- GPU
- Pipeline ve shader
- Monitör
- Buffering
- Dikey senkronizasyon
- Frame pacing ve beam racing
- Compositor
- Grafik API / kütüphaneleri
- Diğer çipler
- Genel bakış
- DSP
- FPGA
- TPU
- Kaynakça
10 yorum
Bu ifadenin pek çok blogda aynı şekilde tekrarlandığını görüyorum; asıl kaynağının neresi olduğunu merak ediyorum.
Blogların çoğu birbirine referans vermekle meşgul olduğu için özgün metni tahmin etmek zordu; bulabildiğim tek şey IBM'in AIO belgesi oldu, ama bunun yalnızca kernel I/O bağlamında ele alındığını düşünüyorum. Ayrıca bu ayrım yönteminin kendisinin de tartışmalı olduğunu duydum.
Güvenilirliği yüksek bir değerlendirme ölçütü müdür?
Öncelikle senkron/asenkron için devre tarafındaki temeli esas alabiliriz.
Senkron devreler zamanlama için clock kullanır, asenkron olanlar ise event ya da başka girdiler tarafından tetiklenir.
Yani asenkron API'leri de benzer şekilde callback vb. ile tetiklenen bir yapı olarak tanımlamak çok da yanlış olmaz gibi görünüyor.
https://developer.mozilla.org/en-US/docs/…
Blocking/non-blocking API'lerde uygun tanım, işlemi mutlaka beklemek gerekip gerekmediğidir.
Ancak beklememek için çağrılan fonksiyonun kontrolü elinde tuttuğu bir implementasyon olması gerektiğinden, sanırım bu şekilde açıklanma eğilimi daha baskın.
https://nodejs.org/en/docs/guides/blocking-vs-non-blocking/
Kısaca geçmek istediğim için atlamıştım, ama bu içeriği ek olarak dahil etmeye çalışacağım.
Yazdıklarınıza tamamen katılıyorum. Ancak bu iki ölçüt ekseninin bir kesitte dört bölge olarak çizilmesi gerekip gerekmediği, çizilip çizilemeyeceği ve uygun biçimde ayrışıp ayrışmadığı konusunda hâlâ emin olamıyorum. Bana göre Blocking ile Sync kavramsal olarak bağlamın %90’ını paylaşıyor gibi geliyor. Aynı durum Non-Blocking & Async için de geçerli.
Blocking-Sync ile Non-Blocking-Async birlikte sık kullanılsa da, bunları ayırmanın gerekli olduğu durumlar vardır.
selectgibi I/O multiplexingBu yüzden ben bunları ayırarak kullanmanın daha doğru olduğunu düşünüyorum.
Verdiğiniz örnekler hakkında neredeyse hiç bilgim olmadığından, sanırım bu yüzden tam olarak empati kuramıyorum.
https://incredible-larva.tistory.com/entry/IO-Multiplexing-Topabogi-1. bölüm bu yazıda aşağıdaki gibi açıklanıyor:
Buna dair nasıl bir görüşünüz olduğunu merak ediyorum. Açıkçası ben bu noktada artık bu 2x2 sınıflandırmanın anlamsız olduğunu hissetmeye başladım. Çünkü alanına göre, bakış açısına göre yorumlar çok farklı görünüyor.
Vay canına, harika bir kaynak, teşekkürler.
Keyifle okudum!
Kaydırma sonu gelmiyor gibi görünüyor, haha
Benzer konuları ele alan "7 Concurrency Models" adlı kitabı da en az bir kez okumaya değer gibi duruyor.
İçindekilerle karşılaştırınca benziyorlar.
Güzel bir kitap gibi görünüyor