69 poin oleh alstjr7375 2022-12-28 | 10 komentar | Bagikan ke WhatsApp

Dimulai dari perapian istilah sederhana lalu membahasnya secara luas hingga grafis dan semikonduktor.

  1. Istilah
    • konkurensi / paralelisme
    • asinkron / non-blocking
    • preemptive / non-preemptive
  2. Sistem operasi dan prosesor
    • sistem operasi
    • prosesor
  3. Coroutine dan fiber
    • fiber
    • coroutine
  4. Generator, Async/Await, continuation
    • generator
    • Async / Await
    • continuation
  5. Promise dan Future
  6. I/O multiplexing
    • multiplexing
    • socket
    • model-model I/O
  7. Ring buffer, model I/O terbaru, LMAX Disruptor
    • ring buffer
    • model I/O terbaru
    • LMAX Disruptor
  8. Primitive sinkronisasi
    • kebutuhan
    • thread safety
    • spinlock
    • mutex
    • semaphore
    • STM
    • GIL
  9. Pendekatan bahasa skrip lain dan pola Reactor/Proactor
    • Ractor (Ruby)
    • Node.js (pola Reactor)
    • pola Proactor
  10. CSP dan actor
    • CSP
    • actor
  11. Green thread, goroutine, dan teknologi runtime asinkron terbaru
    • green thread
    • runtime CSP terbaru
    • runtime actor terbaru
  12. Paralelisme
    • SIMD dan pipelining
    • OpenMP & MPI
    • teknik paralel terbaru
    • arsitektur lambda
  13. GPU
    • pipeline dan shader
    • monitor
    • buffering
    • sinkronisasi vertikal
    • frame pacing dan beam racing
    • compositor
    • API / pustaka grafis
  14. Chip lainnya
    • ikhtisar
    • DSP
    • FPGA
    • TPU
  15. Referensi

10 komentar

 
roxie 2022-12-31

Sinkron dan asinkron adalah tentang siapa yang memeriksa apakah pekerjaan sudah selesai
Blocking dan non-blocking adalah tentang ada tidaknya hak kontrol

Saya melihat kalimat ini diulang-ulang persis sama di banyak blog, dan jadi penasaran apa sumber aslinya.

Sebagian besar blog sibuk saling merujuk satu sama lain sehingga saya tidak bisa menebak teks aslinya, dan yang paling mendekati yang saya temukan hanya dokumen AIO milik IBM. Tapi saya merasa dokumen itu hanya membahas dalam konteks kernel I/O saja. Dan saya juga dengar bahwa cara pembedaan seperti itu sendiri masih kontroversial.

Apakah ini bisa dianggap sebagai kriteria penilaian yang kredibel?

 
alstjr7375 2022-12-31

Pertama, sinkron/asinkron tampaknya bisa dijelaskan berdasarkan konsep di sisi rangkaian.
Rangkaian sinkron menggunakan clock untuk timing, sedangkan asinkron dipicu oleh event atau input lain.
Artinya, tidak terlalu berlebihan jika API asinkron juga didefinisikan sebagai metode yang dipicu dengan cara serupa melalui callback dan sebagainya.
https://developer.mozilla.org/en-US/docs/…

Untuk API blocking/non-blocking, definisi yang tepat adalah apakah kita harus menunggu pekerjaan tersebut selesai atau tidak.
Namun, agar tidak perlu menunggu, harus ada implementasi di mana fungsi yang dipanggil memiliki kendali, jadi sepertinya itulah sebabnya penjelasan sering banyak mengarah ke sana.
https://nodejs.org/en/docs/guides/blocking-vs-non-blocking/

Awalnya saya sengaja melewatinya secara singkat, tetapi saya akan menambahkan penjelasan ini juga.

 
roxie 2023-01-01

Saya setuju dengan semua yang Anda sampaikan. Namun, saya masih sulit merasa yakin tentang apakah kedua sumbu kriteria ini harus digambar pada satu bidang sebagai kuadran, apakah memang bisa digambar seperti itu, dan apakah pembedaan tersebut benar-benar tepat. Bagi saya, Blocking dan Sync terasa berbagi sekitar 90% konteks yang sama secara konseptual. Hal yang sama juga berlaku untuk Non-Blocking & Async.

 
alstjr7375 2023-01-01

Blocking-Sync dan Non-Blocking-Async memang sering digunakan bersama, tetapi ada kasus-kasus yang perlu dibedakan.

  • Blocking-Async: I/O multiplexing seperti select
  • Non-Blocking-Sync: polling data

Karena itu, saya justru merasa lebih tepat untuk menggunakannya secara terpisah sesuai pembedaan tersebut.

 
roxie 2023-01-02

Sepertinya saya kurang memahami contoh-contoh yang Anda sebutkan, jadi saya juga jadi kurang bisa benar-benar berempati dengannya.

Di artikel https://incredible-larva.tistory.com/entry/IO-Multiplexing-topabogi-bagian-1 ini, dijelaskan seperti berikut:

Pada akhirnya, user process yang meminta select menilai ada tidaknya pekerjaan lanjutan dengan melihat nilai yang dikembalikan. Karena beberapa permintaan I/O yang masuk secara tak terduga dikelola sekaligus, ada juga yang memandangnya sebagai Asynchronous, tetapi pada akhirnya operasi I/O individual yang sebenarnya menunjukkan perilaku yang Synchronous.

Saya penasaran seperti apa pendapat Anda soal ini. Sejujurnya, pada titik ini saya merasa klasifikasi 2x2 ini tidak lagi bermakna. Karena tampaknya penafsirannya berbeda-beda tergantung domain dan sudut pandang.

 
alstjr7375 2023-01-02

Selanjutnya, saat menunggu respons dari kernel, akan datang sinyal callback dari kernel bahwa nilai hasil sudah siap, dan terlihat proses user menyalin data ke buffernya sendiri.

Karena bagian ini merupakan metode pemicu oleh callback seperti yang Anda setujui di atas, jadi jika memang harus dibedakan/didefinisikan, sepertinya tepat jika disebut Blocking-Async.
Saya pikir ada kasus yang bisa terlihat ambigu tergantung sudut pandangnya.

Namun, polling adalah contoh yang jelas,
https://en.wikipedia.org/wiki/Polling_(computer_science)

Dalam kasus polling, karena status kesiapan data diperiksa berulang kali, ini adalah contoh yang tepat untuk Sync-Blocking.

 
wonkwh 2022-12-29

Wow, terima kasih atas materi yang bagus ini.

 
kayws426 2022-12-29

Saya membacanya dengan baik!

 
bus710 2022-12-28

Scroll-nya tidak ada habisnya ya, deg-degan.
Sepertinya buku berjudul "7 Model Konkruensi" yang membahas topik serupa cukup layak dibaca setidaknya sekali.

 
alstjr7375 2022-12-29

Daftar isinya setelah dibandingkan ternyata mirip.
Sepertinya ini buku yang bagus.