20 Параллельное программирование

Параллельное программирование

  • Параллелизм: относится к нескольким частям программы, выполняемым одновременно.
  • Параллелизм: несколько частей программы выполняются на нескольких процессорах одновременно.

Потоки в параллельном программировании

  • Поток — это легкий процесс, который использует одно и то же адресное пространство и другие ресурсы с другими потоками в том же процессе, но каждый поток имеет свой собственный поток выполнения.
  • Потоки обеспечивают более легкую модель параллельного программирования, чем процессы.

Создание темы

  • Библиотека потоков POSIX предоставляет API для создания потоков с именем pthread_create.
  • После создания потока в программе будет одновременно выполняться несколько потоков, поэтому корректность программы зависит от того, как эти потоки взаимодействуют друг с другом.

Синхронизация потоков

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

мьютекс

  • Мьютекс — это механизм синхронизации, используемый для управления доступом к общему ресурсу, чтобы гарантировать, что только один поток может получить доступ к общему ресурсу одновременно.
  • Библиотека потоков POSIX предоставляет мьютекс, называемый pthread_mutex.

переменная условия

  • Условная переменная — это механизм синхронизации, который позволяет потоку приостанавливаться в ожидании выполнения некоторого условия и возобновляться, когда условие выполнено.
  • Библиотека потоков POSIX предоставляет переменную условия, называемую pthread_cond.

сигнальная переменная

  • Семафор — это механизм синхронизации, используемый для управления доступом к общим ресурсам и обеспечивающий функции счетчика.
  • Библиотека потоков POSIX предоставляет семафор sem_t.

тупик

  • Взаимная блокировка — это ситуация, в которой два или более потоков ожидают друг от друга ресурсов, принадлежащих друг другу.
  • Взаимная блокировка — распространенная проблема в параллельном программировании, поэтому взаимодействие между потоками необходимо тщательно планировать.

Условия гонки потоков

  • Состояние гонки означает, что корректность программы зависит от порядка выполнения между потоками и доступа к общим ресурсам между потоками.
  • Условия гонки могут привести к неопределенному поведению или ошибкам программы, поэтому взаимодействие между потоками необходимо тщательно планировать.

Потокобезопасный дизайн

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

Supongo que te gusta

Origin blog.csdn.net/m0_56898461/article/details/130202707
Recomendado
Clasificación