Многопоточность: Конкурентность и Параллелизм
Мы уже знаем о процессе и потоке.
Процесс выделяется на одно ядро, а поток — это маленькие фрагменты нашего процесса
Но как назвать мультизадачность и мультипоточность? Ответ — Конкурентность и Параллелизм. Их часто путаем между собой, поэтому стоит определиться.
Конкурентность - это возможность разбивать алгоритм или компьютерную программу на отдельные блоки, которые могут выполняться независимо и коммуницировать между собой. Конкурентность может быть на одном ядре и будет казаться, что все выполняется одновременно.
Представим что вы пишите код и слушаете музыку, работая на одноядерном процессоре. На уровне операционной системы, эти задачи разбиваются на отдельные блоки, которые выполняются процессором по очереди, а переключение между этими блоками происходит настолько быстро, что создается впечатление, будь-то эти процессы выполняются одновременно. Однако это не так.
Конкурентность - это способность компьютера справляться с множеством задач одновременно, в то время как параллелизм - способность компьютера выполнять несколько задач одновременно. Это про то, как мы структурируем логику выполнения программы, как мы делим ее на логические блоки, которые могут выполняться параллельно или поочередно.
Параллелизм — это одновременное выполнение разных частей одной задачи. Параллелизм требует многоядерный процессор. Многоядерный процессор способен обрабатывать несколько инструкций в единицу времени, по одной инструкции на ядро. Соответственно, многоядерные процессоры умеют выполнять несколько задач одновременно, за счет чего достигается параллелизм.
https://www.youtube.com/watch?v=oV9rvDllKEg
Мы уже знаем о процессе и потоке.
Процесс выделяется на одно ядро, а поток — это маленькие фрагменты нашего процесса
Но как назвать мультизадачность и мультипоточность? Ответ — Конкурентность и Параллелизм. Их часто путаем между собой, поэтому стоит определиться.
Конкурентность - это возможность разбивать алгоритм или компьютерную программу на отдельные блоки, которые могут выполняться независимо и коммуницировать между собой. Конкурентность может быть на одном ядре и будет казаться, что все выполняется одновременно.
Представим что вы пишите код и слушаете музыку, работая на одноядерном процессоре. На уровне операционной системы, эти задачи разбиваются на отдельные блоки, которые выполняются процессором по очереди, а переключение между этими блоками происходит настолько быстро, что создается впечатление, будь-то эти процессы выполняются одновременно. Однако это не так.
Конкурентность - это способность компьютера справляться с множеством задач одновременно, в то время как параллелизм - способность компьютера выполнять несколько задач одновременно. Это про то, как мы структурируем логику выполнения программы, как мы делим ее на логические блоки, которые могут выполняться параллельно или поочередно.
Параллелизм — это одновременное выполнение разных частей одной задачи. Параллелизм требует многоядерный процессор. Многоядерный процессор способен обрабатывать несколько инструкций в единицу времени, по одной инструкции на ядро. Соответственно, многоядерные процессоры умеют выполнять несколько задач одновременно, за счет чего достигается параллелизм.
https://www.youtube.com/watch?v=oV9rvDllKEg