Mengenal Istilah Concurrent & Parallel
Tags: computerscience, tutorial, beginners, programming
Published: 2022-09-11 13:55:42

Di artikel ini saya akan membahas pembahasan yang menarik tentang apa itu istilah _concurrent_ & _parallel_. Yang mungkin dari kawan-kawan sering mendengarnya atau membacanya. 


Kedua istilah ini juga sering rancu pengartiannya satu sama lain. Sehingga saya harapkan saya dan juga kawan-kawan setelah membaca artikel ini menjadi makin paham. 

Oh ya, saya juga menyertakan beberapa referensi yang saya gunakan ketika menulis ini. Jadi kawan-kawan bisa membacanya juga atau bahkan mengoreksi tulisan ini jika ada yang kurang.



## Concurrent
Agar mudah dalam memahaminya, mari kita analogikan kedalam skenario sederhana. Katakanlah Anda diberikan waktu hanya 5 menit untuk melakukan 2 tugas. Tugas Ke-1, Anda harus menyelesaikan soal matematika. Tugas Ke-2, Anda harus berbalas _chat_ dengan Ibu Anda. 

Di konsep _Concurrent_, Anda tidak bisa melakukan kedua tugas itu dalam bersamaan atau serentak atau simultan. Anda dapat mengerjakan soal matematika dan ketika ada _chat_ masuk, Anda baru membalasnya. 

Anggaplah selama 5 menit tadi Anda sudah menyelesaikan 2 tugas. Namun karena keterbatasan kemampuan, proses yang dilakukan tidak satu per satu (sampai tugas ke-1 selesai dilanjutkan tugas ke-2 selesai). Namun secara bergantian (tidak lengkap selesai). Jadi ada selang waktu tertentu Anda harus beralih untuk berbalas chat.

### Lalu apa yang bisa kita dapat dari skenario tadi?
Sebelumnya Anda perlu tahu pengertiannya dari beberapa sumber berikut.

Menurut Encyclopedia Britannica, 

> _"Concurrent programming, computer programming in which, during a period of time, multiple processes are being executed. For example, two processes can be interleaved so that they are executed in turns"_ [1]

Menurut Madhavan,

> _"Concurrency means that an application is making progress on more than one task at the same time (concurrently). Well, if the computer only has one CPU the application may not make progress on more than one task at exactly the same time, but more than one task is being processed at a time inside the application. It does not completely finish one task before it begins the next."_[2]

Dari beberapa literatur dan skenario tadi, menurut saya **_concurrent_ adalah suatu teknik mengerjakan 2 atau lebih tugas secara bersamaan (tidak serentak) dalam suatu periode waktu tertentu yang dikerjakan oleh pemroses**. Pemroses disini bisa berarti _core processor_ atau orang jika konteksnya manusia.



## Parallel
Saya akan memberikan skenario tugas yang sama dari skenario sebelumnya. Namun, pada kasus ini sepertinya Anda sedang beruntung dibantu oleh kawan Anda dalam mengerjakan soal matematika. Sehingga Anda bisa memiliki fokus untuk tugas ke-2 Anda yaitu berbalas _chat_. Sehinga kedua tugas tadi dapat diproses secara serentak atau simultan.

Menurut Madhavan,

> "Parallelism means that an application splits its tasks up into smaller subtasks which can be processed in parallel, for instance on multiple CPUs at the exact same time.
> Parallelism does not require two tasks to exist. It literally physically run parts of tasks OR multiple tasks, at the same time using the multi-core infrastructure of CPU, by assigning one core to each task or sub-task."[2]

Menurut Educative.io,

> "In parallel programming, parallel processing is achieved through hardware parallelism e.g. executing two processes on two separate CPU cores simultaneously."[3]

Dari beberapa literatur dan skenario tadi, menurut saya **_parallel_ adalah teknik mengerjakan 2 atau lebih tugas secara bersamaan (serentak) dalam suatu periode waktu tertentu yang dikerjakan oleh banyak pemroses (tiap pemroses menangani satu tugas)**. Pemroses disini bisa berarti _core processor_ atau orang jika konteksnya manusia.

---



**References:**
[1] History, The. "Concurrent Programming | Definition & Facts." Encyclopedia Britannica, https://www.britannica.com/technology/concurrent-programming. Accessed 9 Aug. 2022.

[2] Nagarajan, Madhavan. "Concurrency vs. Parallelism: A Brief View." Medium, 16 Jan. 2020, https://medium.com/@itIsMadhavan/concurrency-vs-parallelism-a-brief-review-b337c8dac350.

[3] "What Is Concurrent Programming?" Educative, https://www.educative.io/answers/what-is-concurrent-programming. Accessed 9 Aug. 2022.