Concurrency vs Parallelism

🆚 Comparison

FeatureConcurrencyParallelism

Definition

Managing multiple tasks at the same time.

Executing multiple tasks at the same time.

Focus

Structure of the program, dealing with multiple tasks.

Execution of tasks simultaneously on multiple cores.

Task Handling

Tasks start, run, and complete in overlapping time periods.

Tasks run at exactly the same time.

Context Switching

Frequent context switching between tasks.

Little to no context switching needed.

Resource Utilization

Better resource utilization via multitasking.

High CPU utilization by running tasks on multiple cores.

Example

Handling multiple I/O-bound tasks.

Performing multiple CPU-bound tasks.

Programming Model

Often achieved with threads, coroutines, and asynchronous programming.

Often achieved with parallel loops, GPU processing, and multi-core processing.

Goal

Improve throughput and responsiveness.

Improve computation speed and reduce execution time.

Typical Use Cases

Web servers handling multiple requests, GUI applications.

Scientific computations, video rendering, real-time simulations.

Performance Gain

Gains depend on effective management of tasks.

Gains depend on the number of available processing units.

🅰️ Concurrency

Definition : การจัดการกับหลายงานในเวลาเดียวกัน

Focus : โครงสร้างของโปรแกรมและการจัดการหลายงาน

Task Handling : งานเริ่มทำและเสร็จในช่วงเวลาเดียวกัน

Context Switching : การเปลี่ยนบริบทระหว่างงานบ่อย

Resource Utilization : ใช้ทรัพยากรได้ดีผ่านการทำงานหลายอย่าง

Example : การจัดการหลายงานที่เกี่ยวข้องกับการ I/O เช่น การรับคำขอจากเซิร์ฟเวอร์เว็บ

Programming Model : ใช้เทคนิคต่าง ๆ เช่น Threads, Coroutines, และ Asynchronous Programming

Goal : เพิ่มความสามารถในการตอบสนองและการทำงานร่วมกัน

Typical Use Cases : เซิร์ฟเวอร์เว็บที่จัดการคำขอหลายคำขอ, แอพพลิเคชัน GUI

Performance Gain : ขึ้นอยู่กับการจัดการงานอย่างมีประสิทธิภาพ เช่น การบริหารการเปลี่ยนบริบท (context switching) และการใช้ทรัพยากรอย่างเหมาะสม

🅱️ Parallelism

Definition : การประมวลผลหลายงานพร้อมกันในเวลาเดียวกัน

Focus : การประมวลผลงานพร้อมกันบนหลายคอร์

Task Handling : งานทำงานพร้อมกันในเวลาเดียวกัน

Context Switching : การเปลี่ยนบริบทระหว่างงานน้อยมากหรือไม่มี

Resource Utilization : ใช้ CPU สูงโดยการทำงานบนหลายคอร์

Example : การประมวลผลที่เกี่ยวข้องกับ CPU เช่น การเรนเดอร์วิดีโอ

Programming Model : ใช้เทคนิคต่าง ๆ เช่น Parallel Loops, GPU Processing, และ Multi-Core Processing

Goal : เพิ่มความเร็วในการคอมพิวเตอร์และลดเวลาการดำเนินการ

Typical Use Cases : การคำนวณทางวิทยาศาสตร์, การเรนเดอร์วิดีโอ, การจำลองเวลาจริง

Performance Gain : ขึ้นอยู่กับจำนวนหน่วยประมวลผลที่ใช้ได้ เช่น คอร์ของ CPU หรือ GPU

Last updated