Описание тега multithreading

По вопросам, касающимся многопоточности, способности компьютера или программы выполнять работу одновременно или асинхронно, используя несколько параллельных потоков выполнения (обычно называемых потоками).

Многопоточность - это распространенная модель для реализации SM в многоядерных машинах, где потоки совместно используют память через общие переменные. В этой модели параллельного программирования процессор может создавать несколько потоков, которые будут выполняться параллельно. Каждый поток имеет свой собственный стек, переменные и идентификатор, считающийся частным состоянием. Для каждого потока существует уникальная куча, общая для всех, которая считается общей памятью.

Чтобы можно было наиболее эффективно и безопасно разделить объем работы на несколько параллельных потоков выполнения, необходимо решить ряд критических областей.

  • Планирование: убедитесь, что рабочие задачи могут выполняться независимо и эффективно (например, предотвращение взаимоблокировок / живых блокировок)
  • Публикация: убедитесь, что данные, измененные в одном потоке, видны только другим, как ожидалось
  • Синхронизация: убедитесь, что критические области защищены от множественных одновременных обновлений, вызывающих потерю / повреждение данных.

Основополагающий принцип параллельной обработки - закон Амдала ( график). Этот закон регулирует уменьшение пропускной способности, которое может быть достигнуто за счет большего числа одновременно работающих процессоров / ядер. Следовательно, общая цель многопоточности - минимизировать объем последовательного выполнения (исключительная блокировка) в любой параллельной системе.

Часто задаваемые вопросы

Книги

Дополнительная информация:

Связанные теги

параллелизм потокобезопасность pthreads threadpool волокна сопрограмм зеленые потоки легкие процессы lwt