DEV Community

Muhammad Fauzan
Muhammad Fauzan

Posted on

Apa itu Thread dan Concurrency ? dan Perbedaan Multiprocessing, Multiprogramming dengan Multithreading.

Alt Text

Halo disini saya akan memberikan artikel tentang Thread dan Concurrency, dan apa perbedaan Multiprocessing, Multiprogramming dengan Multithreading.


1. Apa itu Thread?

Thread adalah sekumpulan instruksi yang dirancang untuk dijadwalkan dan dijalankan oleh CPU dari sebuah proses, proses ini adalah sebuah program yang sedang berjalan.

Sebuah program dapat mempunyai banyak thread dalam satu waktu dan dapat menangguhkan atau mengakhiri thread tersebut jika program sudah selesai berjalan atau ditutup.


Jenis Thread

Threads terbagi menjadi dua jenis, yaitu Single Thread dan Multi Thread.

  • Single Thread : proses hanya mengeksekusi satu thread saja pada satu waktu.
  • Multi Thread : proses dapat mengeksekusi sejumlah thread dalam satu waktu.

Multi Thread akan saya jelaskan secara komprehensif di konsep Multithreading.


Ideologi pada Thread

Thread memiliki dua bentuk proses, atau yang biasa saya sebut sebagai Ideologi (agar mudah diingat haha) yaitu Concurrency dan Parallelism.

  • Concurrency : Concurrency adalah sebuah program yang memproses lebih dari satu tugas pada waktu yang sama, concurrency di desain agar bisa dijalankan secara multi thread. Analoginya sama seperti 2 antrian pada 1 kasir.
  • Parallelism : Parallelism adalah sebuah program yang di mana satu tugas dibagi menjadi sub-tugas yang lebih kecil yang diproses secara bersamaan atau paralel, parallelism di desain agar bisa dijalankan secara multi process. Analoginya sama seperti 2 antrian pada 2 kasir.

Concurrency akan saya jelaskan secara komprehensif di bagian berikut.


2. Apa itu Concurrency?

Concurrency adalah sebuah program yang memproses lebih dari satu tugas pada waktu yang sama.

Concurrency dapat meningkatkan kecepatan eksekusi secara keseluruhan dalam sistem yang multi prosesor dan multi core.


Model pada Concurrency

Concurrency memiliki berbagai model dimana setiap thread berkomunikasi satu sama lain.

Shared State vs. Separate State

Shared State berarti bahwa berbagai thread dalam sistem akan berbagi beberapa state di antara mereka. state adalah sebuah kumpulan data.

Alt Text

Separate State berarti bahwa thread yang berbeda dalam sistem tidak berbagi state apa pun di antara mereka. Jika state yang berbeda perlu berkomunikasi, mereka melakukannya dengan menukar objek yang tidak dapat diubah atau istilahnya adalah immutable di antara mereka, atau dengan mengirimkan salinan objek (atau data) di antara mereka.

Alt Text

Parallel Workers

Parallel Workers adalah model yang dimana setiap task yang masuk ditugaskan ke worker yang berbeda.

Alt Text

Parallel Workers dapat dirancang untuk menggunakan shared state atau separate state, yang berarti worker memiliki akses ke beberapa shared state (objek atau data bersama), atau mereka tidak memiliki shared state.

Dalam model Parallel Workers, program atau delegator mendistribusikan task masuk ke worker yang berbeda. Setiap worker menyelesaikan task secara penuh. worker bekerja secara paralel, berjalan di thread yang berbeda, dan mungkin pada CPU yang berbeda.

Event Driven System

Event Driven System adalah model yang dimana setiap worker hanya mengerjakan sebagian dari task penuh, setelah sebagian selesai maka dia akan melanjutkannya ke worker lain.

Alt Text

Sistem pada model Event Driven System biasanya di desain menggunakan Non-Blocking IO, Non-Blocking IO berarti bahwa ketika worker memulai operasi IO (misalnya membaca file atau data dari koneksi jaringan) worker tidak menunggu hingga panggilan IO lain selesai.

Salah satu yang paling populer menggunakan model Event Driven System adalah Node.js.


3. Apa itu Multiprocessing?

Multiprocessing adalah menjalankan banyak proses menggunakan banyak processor secara bersamaan.

Alt Text

Keuntungan utama dari multiprocessing adalah kecepatan, dan kemampuan untuk mengelola informasi dalam jumlah yang lebih besar.


4. Apa itu Multiprogramming?

Multiprogramming adalah lebih dari satu proses yang berjalan pada satu waktu, ini meningkatkan pemanfaatan CPU dengan mengatur task (kode dan data) sehingga CPU selalu memiliki satu proses untuk dieksekusi.

Alt Text

Tujuan dari multiprogramming untuk menyimpan banyak task di memori utama. Jika satu task diisi dengan Input / output, CPU dapat ditugaskan ke task lain.


5. Apa itu Multithreading?

Multithreading adalah teknik dimana beberapa thread dibuat dari suatu proses untuk meningkatkan kecepatan komputasi sistem.

Alt Text

Dalam multithreading, banyak thread dalam suatu proses dijalankan secara bersamaan dan pembuatan proses dalam multithreading dilakukan secara economical. Economical berarti mereka berbagi sumber daya prosesor yang sama.


Sekian artikel rangkuman yang bisa saya tulis dan sampaikan, semoga bermanfaat!.


Referensi :

Discussion (1)

Collapse
brokylabs profile image
Catur Hidayat

Membantu sekali mas, Nambah ilmu...thanks