024. Модель памяти C++ - Андрей Янковский

Sdílet
Vložit
  • čas přidán 21. 01. 2015
  • Подробнее о С++ Party events.yandex.ru/events/cpp-p...
    В докладе Андрей расскажет о моделях памяти различных процессоров, о тонкостях реализации неблокирующих алгоритмов и о том, какое отношение всё это имеет к С++.

Komentáře • 62

  • @pro.crastination
    @pro.crastination Před 8 lety +7

    Большое спасибо! Очень помогло в понимании вопроса.

  • @UnrealEngine_Master
    @UnrealEngine_Master Před 8 lety +5

    Все чотко и понятно. Спасибо за доклад

  • @rajponomarenko9841
    @rajponomarenko9841 Před 11 měsíci +4

    Большое спасибо, Андрей! Уверен, даже Энтони Уильямсу не помешало бы посмотреть это перед тем, как выпускать очередное издание книги "C++ Concurrency in Action" :) Вначале - зачем, и только потом как. После этого всё ложится по полочкам.

  • @riz1_k
    @riz1_k Před 10 měsíci +3

    Наконец-то спикер без деффектов речи и волнуещегося голоса. Топич

  • @user-zb5pr4wv8d
    @user-zb5pr4wv8d Před 8 lety

    Спасибо очень интересная информация

  • @andreyyurchenko8802
    @andreyyurchenko8802 Před 7 lety +8

    да, очень толково

  • @Yury-Baranovskiy
    @Yury-Baranovskiy Před 4 lety

    Спасибо за лекцию

  • @user-sz7kt8nf1m
    @user-sz7kt8nf1m Před 3 lety +4

    Круто, спасибо. Читал Энтони Уильямса, описание казалось несколько размытым. Здесь все по полочкам.

  • @ivanalign2048
    @ivanalign2048 Před 7 lety

    очень круто! Помогло, спасибо!!
    1 момент: в примере 3 на 20:54 опечатка. подшаманивать надо CPU1, а не CPU0

  • @jozz3235
    @jozz3235 Před 6 lety

    Спасибо за прояснение ;)

  • @holy-del
    @holy-del Před 2 lety

    Доходчиво! Спасибо!

  • @grv379
    @grv379 Před měsícem

    Из определения Acquire следует что операции после барьера можно перекидывать наверх и ставить после последней операции чтения ? Может быть, оно так не работает, но определение не запрещает этого?

  • @nefton001
    @nefton001 Před 3 lety +1

    соотношение сторон для эстетов?

  • @vladimir0rus
    @vladimir0rus Před 3 měsíci

    32:40 На одноядерных процессорах тоже были проблемы с многопоточностью - процессор так же мог переставить операции, а ОС могла в неудачный момент передать управление другому потоку.

  • @user-sz7kt8nf1m
    @user-sz7kt8nf1m Před 3 lety

    Только не понял, почему мъютекс остался даже после описания модели памяти

  • @user-tn9pq7bv5h
    @user-tn9pq7bv5h Před rokem +1

    19:12 как инструкция может попасть выше, то есть за пределы самого условия IF? это же уже нарушение логики алгоритма

  • @user-ty1ms9je9s
    @user-ty1ms9je9s Před 3 lety

    Чем отличаются memory_order_seq_cst и memory_order_acq_rel?

    • @inbuckswetrust7357
      @inbuckswetrust7357 Před 2 lety

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

  • @Tyn4tyk
    @Tyn4tyk Před 2 lety

    что то я не понимаю, разве программа не выполняется сверху вниз? почему процессор путает местами порядок выполнения команд?

    • @assortedbeans
      @assortedbeans Před 2 lety +1

      Если не поставить барьеры то пограмма может выполнится из конца в начало. Закончится выполнение ровно на точке входа main. Будьте осторожны!

  • @user-tx7rp3hb5j
    @user-tx7rp3hb5j Před 4 lety

    Я не очень часто пишу на С++, но почему-то смотрю)

    • @m110h1986
      @m110h1986 Před 3 lety +4

      это у вас врождённая тяга к истине

  • @user-qz5jz1qe3r
    @user-qz5jz1qe3r Před 5 lety +4

    Аааа как с этим жить..

  • @vladimir0rus
    @vladimir0rus Před 3 měsíci

    6:00 Это неправильный singleton, начиная с С++11 его надо делать через static переменную и без мьютексов. Получается это синтетический пример того как делать не надо, что Ок в контексте выступления.

  • @maxrulerootmaxruleroot9916
    @maxrulerootmaxruleroot9916 Před 8 měsíci

    очень интересно, но ничего не понял....

  • @teastrum
    @teastrum Před 4 lety +2

    Савельев:"Компьютерные мальчики"

  • @alexgorodecky1661
    @alexgorodecky1661 Před 7 lety +37

    просто божественно! дикий контраст с джавистами, которые любят рассказывать свою элитарную муть про memory model по 2 часа с нулевым итогом для понимания!

    • @danieltereshchenko6214
      @danieltereshchenko6214 Před 7 lety +10

      Я более чем уверен что если бы парень писал на джаве, обьяснил бы также ясно. При чём тут язык программирования к стилю ведения доклада?

    • @HedgehogInTheCPP
      @HedgehogInTheCPP Před 5 lety +10

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

    • @user-iCuaebtAi926
      @user-iCuaebtAi926 Před 4 lety +1

      Меня выгнали из джава, когдя я им начал толковать как написать сборщик мусора в режиме ядра

    • @x-path
      @x-path Před 4 lety

      @@user-iCuaebtAi926 откуда выгнали?)

    • @user-iCuaebtAi926
      @user-iCuaebtAi926 Před 4 lety +2

      @@x-path точнее не смог пройти интервью. Им нужна вера, что джава - это hi performance. А я не уверовал

  • @zetaBit
    @zetaBit Před 4 lety

    когда я пишу комментарий я немного чувствую себя многопоточным, пшиешь пишешь много текста, а оказывается некоторые независимые от контектса буквы в слове меняются местами, и замечаешь это не сразу :)

  • @user-iCuaebtAi926
    @user-iCuaebtAi926 Před 4 lety +10

    судя по докладу программы вообще не должны работать, так как процессор постоянно путает порядок выполнения

  • @woodlandfantomas2044
    @woodlandfantomas2044 Před 5 lety

    Ребята, почитайте литературу Pentium IV, работа с конвеером хеш (там некоторые команды выполняются на перед, там используются вероятностные методы выполнения операций бинарных и унарных .... т... действий , потом обратная польская нотация, но это старый процессор. В новых, как это работает я не видел.

  • @dmitry6123
    @dmitry6123 Před 5 lety

    Ведение атомиков в цпп было ошибкой. Контроль когерентности памяти не решает всех проблем связанных с "атомарными операциями" в многопроцессорных системах. Натянули сову на глобус как всегда.

    • @ValentinNechayev
      @ValentinNechayev Před 4 lety +2

      Не решает всех проблем - да. "Атомики были ошибкой" - безусловно нет. Глобус - только в вашем воображении, у атомиков есть своя важная роль, даже когда они не решают всё.

  • @tohaya123
    @tohaya123 Před 5 lety +2

    А вы знали, что ++ оператор есть в чистом С? :)

  • @fio6951
    @fio6951 Před 3 lety

    Сначала добивались самой оптимальной оптимизации, теперь ломают голову, как же ее отключить. Идиёты

  • @addressmodel2121
    @addressmodel2121 Před 5 lety +1

    Интересно, а чем новеньким порадуют нас разработчики стандарта С++ 20 ?
    Очень не терпится узнать !
    C++ 17 большинство разработчиков уже освоили, это вчерашний день, это школоте мозги разминать перед контрольной по информатике ... .
    Может быть в C++ 20 наконец то появится что-нибудь для настоящих матёрых программистов, а не для школоты ?

    • @addressmodel2121
      @addressmodel2121 Před 5 lety +1

      Это я прикалываюсь, конечно ... .
      А если серьёзно,
      что то C++ сильно разогнался с новыми стандартами в языковом синтаксическом сахаре, как бы "с рельс не сошёл" на такой скорости ... .

    • @addressmodel2121
      @addressmodel2121 Před 5 lety

      Ладно, прикалываемся дальше ... .
      C++ 11 это уже позавчерашний день, этот стандарт уже старушки на лавочках днём обсуждают ... ! А по вечерам 10-ти летних внуков C++ 11 обучают !
      А ВЫ хорошо знаете C++ 11 ?

    • @user-xd2fi1us5t
      @user-xd2fi1us5t Před 5 lety +5

      @@addressmodel2121 мы еще третий используем, лет через двадцать на 11 перейдем

    • @dmitryponyatov2158
      @dmitryponyatov2158 Před 4 lety

      Общая теория типов, и интерпретатор Haskell в compile time

  • @addressmodel2121
    @addressmodel2121 Před 5 lety

    А Вы знаете что .net framework написан на языке C, а не на C++ ?
    А знаете что основная часть кода ядра, и 80 % кода системных сервисов Windows 10 - это тоже на чистом СИ без плюсОв ?
    А знаете что если принять на работу психологически вменяемых людей с реальным высшим образованием в области информатики и программирования,
    то они на СИ пишут быстрее и качественнее чем на C++ ?

    • @Pafnut01
      @Pafnut01 Před 5 lety +2

      верится с трудом

    • @addressmodel2121
      @addressmodel2121 Před 5 lety

      @@Pafnut01,
      вы шутите что ли про то что вам "верится с трудом" ?
      Информация о языке "Си без плюсов" как основном языке программирования базовых системных модулей есть в интернете в широком доступе. В Википедии про это много написано, и на других ресурсах тоже. Ну вообщем, захотите - найдёте информацию про это.

    • @Pafnut01
      @Pafnut01 Před 5 lety +2

      @@addressmodel2121 Что какая-то часть ядра и сервисов написана на чистом Си, это факт. Я просто про > 80% не уверен и инфы про это в Википедии не нашёл. Может, Вы дадите ссылочку?

    • @addressmodel2121
      @addressmodel2121 Před 5 lety

      @@Pafnut01 ,
      давайте сначала определимся, что считать за ядро:
      - код реализации Native API - это ядро ?
      - системные сервисы - это ядро ?
      - фоновый процесс "бездействие системы" - это ядро ?
      + обработчики прерываний - это точно ядро !
      + программные прерывания и их планировщик - это точно ядро !
      + механизмы отложенных процедур - это точно ядро ! (это такая реал-тайм корпоративная многозадачность внутри ядра)
      Ответ на ваш вопрос про проценты будет зависеть от того, что МЫ договоримся считать ядром ... .

    • @addressmodel2121
      @addressmodel2121 Před 5 lety

      @@Pafnut01 ,
      ссылочка на другом компе, пока не могу дать ...

  • @user-oq9xr8dj1b
    @user-oq9xr8dj1b Před 3 lety +2

    Вижу яндекс и ставлю сразу дизлайк.

    • @Airaleais
      @Airaleais Před 2 lety

      наверное ты дурачок просто =)

    • @user-oq9xr8dj1b
      @user-oq9xr8dj1b Před 2 lety +1

      @@Airaleais ты сам кто? Почему на ютубе отвечают только на самые неважные для меня комментарии, а на важные, не для дураков, реакции никакой?))

    • @user-oq9xr8dj1b
      @user-oq9xr8dj1b Před 2 lety

      @@Airaleais Распределение памяти я доверяю компилятору. Бред этот слушать надобности не вижу. С памятью я могу работать и со своих программ.

    • @Airaleais
      @Airaleais Před 2 lety

      @@user-oq9xr8dj1b ну вот видишь какое ты глупое ламо, и судя по всем даже ролик не посмотрел, а уже все решил, я такой же был =) лет в 6