"Concurrency" (конкурентность) и "Parallelism" (параллелизм)
(описание к предыдущему посту)
Эта два понятия часто путают, но конкурентность не является параллелизмом.
1. Конкуренция (Concurrency):
- Есть один процессор (например, CPU Core 1), который переключается между задачами (например, Task 1 и Task 2) с помощью контекстных переключений (context switches).
- Задачи выполняются поочередно, но создают иллюзию одновременной работы благодаря быстрому переключению.
2. Параллелизм (Parallelism):
- Есть несколько процессоров (например, CPU Core 1, CPU Core 2, CPU Core 3), каждый из которых выполняет свою задачу (например, Task 1.1, Task 1.2, Task 1.3) одновременно.
- Это демонстрирует истинное параллельное выполнение задач, где каждая задача выполняется на отдельном ядре. Это означает, что задачи выполняются одновременно и независимо друг от друга.
3. Конкуренция для обеспечения параллелизма (Concurrency to enable Parallelism):
Конкурентность может быть использована для обеспечения параллелизма. Задачи выполняются на разных ядрах процессора (CPU Core 1, CPU Core 2), и контекстные переключения позволяют задачам выполняться параллельно. Это достигается за счет использования потоков (Threads), которые позволяют задачам выполняться одновременно на разных ядрах, что позволяет эффективно использовать ресурсы и обеспечивать параллельное выполнение.
Таким образом, что конкуренция — это способ организации задач, а параллелизм — это их одновременное выполнение.
Post #2065
2.07K