Станислав Сидристый - lock(_sync): иллюзия идеального выбора

Поделиться
HTML-код
  • Опубликовано: 12 дек 2024

Комментарии • 18

  • @ArseniySergeev
    @ArseniySergeev Год назад +12

    Обожаю когда Сидристый в очередной раз рассказывает про многопоточность)))

    • @nikolaifedorov685
      @nikolaifedorov685 Год назад +1

      Офигеть я тупой, потому что мне кажется что он очень сумбурно рассказывает и Непонятно

    • @ArseniySergeev
      @ArseniySergeev Год назад

      @@nikolaifedorov685 я по нескольку раз пересматриваю)))

  • @maflend2762
    @maflend2762 Год назад

    А он могет. Спасибо

    • @ryanlashkevich9615
      @ryanlashkevich9615 Год назад +1

      Ну на практике я бы проявлял здоровый скепсис к его советам, не зря же его Женя Пешков за volatile укусил.
      В multithreading-е все-таки реализация сильно сложнее, чем это выглядит в теории.

  • @vladlenbulatov1022
    @vladlenbulatov1022 6 месяцев назад

    ребята/коллеги, про волатайл - это всего-лишь указание компилятору/интерпретатору не использовать в оптимизации кода, при работе с этой переменной/членом всякие оптимизации, напримре, как копирование "нашей/данной" ячейки памяти в регистровую память. То есть - всегда нужно сначала "её" из ОЗУ получить, и побыренькому её заюзать, иначе полученное значение/value потеряет свой смысл и значимость. Так что... о волатайлах - не забывайте, хотя...
    пример от си-пи-пишников - std::atomic - каков "великий" смысл данной конструкции?

    • @fvnever
      @fvnever 4 месяца назад

      Вы описываете ключевое слово volatile из C и C++.
      В C# его смысл немного другой. См. секцию "14.5.4 Volatile fields" спецификации ECMA-334 (я использую шестую редакцию): операции чтения и записи над volatile полем имеют acquire/release семантику.
      Интересно, что в C++ упомянутый вами std::atomic также позволяет гарантировать соблюдение похожей семантики, в отличие от ключевого слова volatile из того же C++.

    • @vladlenbulatov1022
      @vladlenbulatov1022 3 месяца назад

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

    • @fvnever
      @fvnever 3 месяца назад

      ​@@vladlenbulatov1022 Я тут попытался написать ответ с парой ссылок, но Ютубу не нравятся такие комментарии, и он их постить отказывается, так что извините, на этот раз будет без пруфов.
      atomic, как и другие атомики, нужен, чтобы иметь определённые гарантии при записи и чтения значения переменной (какие именно гарантии - в C++ можно задать аргументом при вызове методов store и load, например, ну и всякие там exchange, которые предоставляют доступ к более интересным сценариям).
      Возможно, для электронщика ближе окажется тема протоколов когерентности кэшей в CPU - советую почитать на вики.
      Также относительно несложно можно найти обсуждения по поводу связи между когерентностью кэшей и прикладным программированием - в частности, даже полностью прозрачный («когерентный») CPU кэш не позволяет легко реализовать тот же самый атомарный exchange. Поэтому атомик всё ещё может быть нужен, даже для bool.

  • @Frog-6nm
    @Frog-6nm 10 месяцев назад

    Он говорит "ConfigureWait(false)" или что-то иное? 😮

  • @MaksimVolkau
    @MaksimVolkau Год назад +8

    Маст хэв для подготовки к собесам и для понимания

    • @АлександрК-у6ю
      @АлександрК-у6ю Год назад +5

      Маст хэв - это его лекции на clrium. А это для затравочки.

    • @EshkinKot1980
      @EshkinKot1980 Год назад

      @@АлександрК-у6ю Спасибо, тут всё как-то скомкано, автор перескакивает с темы на тему, много слов паразитов. Реально понять можно только то, с чем уже имел дело. На 28 и 29 слайдах нарисовано что-то странное. В начале лекции он говорит, что в реальности на одном ядре всё происходит последовательно, а на графиках нарисовано параллельное выполнение.
      Еще немного удивляют миллисекунды, я когда-то (в конце 0-ых) писал на С++ и счет шел на микросекунды. Даже в PHP миллисекунды появляются из-за работы с БД или по сети. Неужели в C# всё настолько грустно?

    • @АлександрК-у6ю
      @АлександрК-у6ю Год назад

      @@EshkinKot1980 на графиках всё правильно нарисовано, в один момент времени исполняется один поток

    • @АлександрК-у6ю
      @АлександрК-у6ю Год назад

      @@EshkinKot1980 ну и работа с сетью и бд в частности, это же блокировки сетевого ввода/вывода, это уровень ядра. Тут скорее от операционной системы зависит, чем от конкретного языка или платформы. Хотя может быть плохо написан провайдер бд, что тоже возможно.

    • @evseevav
      @evseevav Год назад

      ​@@АлександрК-у6юспасибо, посмотрим