Russian subtitles

← Synchronization - Barrier - Intro to Parallel Programming

Get Embed Code
3 Languages

Showing Revision 1 created 12/01/2016 by Алексей Горячих.

  1. Теперь мы знаем, что thread'ы могут иметь доступ к результатам других thread'ов
  2. через shared или глобальную память.
  3. Это значит что они могут работать вместе над вычислениями, но есть проблема.
  4. Что если один thread попытается считать результат, прежде чем другой thread
  5. посчитает и запишет его
  6. Это значит, что нам нужна синхронизация.
  7. Thread'ы должны синхронизироваться друг с другом чтобы избежать таких случаев.
  8. Потребность в синхронизации
  9. это одна из основных задач в параллельных вычислениях.
  10. Простейшая форма синхронизации называется барьер.
  11. Барьер это место в программе
  12. где все thread'ы останавливаются и ждут.
  13. Когда все потоки достигают барьера,
  14. они могут продолжить исполнять оставшийся код.
  15. Изобразим это.
  16. Вот несколько thread'ов и они выполняют некоторый код.
  17. Я нарисую их разными цветами,
  18. и разной длины
  19. чтобы было видно, что они находятся в разных участках кода.
  20. Они находятся в разных местах исполнения программы.
  21. И когда они достигают барьера,
  22. они останавливаются и ждут всех остальных.
  23. У меня на рисунке, красный достиг барьера первым и остановился.
  24. В это время синий продолжает работать и зеленый продолжает работать,
  25. затем синий достигает барьера
  26. и останавливается,
  27. и зеленый последним достигает барьера и останавливается.
  28. И это все 3 thread'а - в моем примере 3 thread'а
  29. Все 3 thread'а достигли барьера, и могут идти дальше.
  30. Все они продолжают работу, и мы на самом деле не знаем, который начнет первым.
  31. Может быть синий начнет первым,
  32. затем, может быть, зеленый, а красный последний.
  33. Посмотрим на код который иллюстрирует это.