<aside> 💡

Не забываем, что нить == поток

</aside>

<aside> 💡

С точки зрения ЯП нить - функция.

</aside>

Нити и куда они мапятся в ядре (ссылка на прошлый билет)

Многопоточность

<aside> 💡

Многопоточность - ****свойство платформы (например, операционной системы, виртуальной машины) или приложения, состоящее в том, что процесс, порождённый в операционной системе, может состоять из нескольких потоков, выполняющихся «параллельно», то есть без предписанного порядка во времени. При выполнении некоторых задач такое разделение может достичь более эффективного использования ресурсов вычислительной машины.

</aside>

Параллелизм vs конкурентность

<aside> 💡

Параллелизм - свойство систем, при котором несколько вычислений выполняются параллельно (то есть в один и тот же момент времени) . Работает на физическом уровне (например вычисления на разных ядрах процессора).

</aside>

<aside> 💡

Конкурентность - свойство систем, при котором несколько вычислений выполняются в перекрывающиеся периоды времени (то есть не обязательно одновременно). Работает на логическом уровне (то есть это подход к проектированию систем). Более общее понятие, может включать в себя параллелизм. Называется так, потому что потоки конкурируют за общие ресурсы.

</aside>

image.png

POSIX threads (pthreads)

<aside> 💡

POSIX threads - ****стандарт, определяет API для управления потоками, их синхронизации и планирования.

</aside>

Перечислять интерфейсы не буду, так как на паре мы разбирали функции управления потоками на примере плюсового std::threads, который как раз реализован на основе pthreads

MPI/OpenMP

<aside> 💡

MPI и OpenMP - интрументы для параллельного программирования.

</aside>