Лекция 5. Multithreading in C++ (потоки, блокировки, задачи, атомарные операции, очереди сообщений)

Поділитися
Вставка
  • Опубліковано 11 лис 2024

КОМЕНТАРІ • 19

  • @СергейГречишников-в8х

    Ого, вот это лекции, спасибо!

  • @VeloVetal
    @VeloVetal Рік тому +4

    1:15:20 -- в оригинале фраза звучит так: "There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors." -- В компьютерных науках есть две сложные проблемы: инвалидация кэша, именование переменных и ошибка на единицу.

  • @Студенческиепроекты

    Понимаю, что синглтон здесь использовался для демонстрации, но всё же скажу, что начиная с C++11 если в функции инициализируется static переменная, то это гарантировано сделает только один поток, а другие потоки не будут обращаться к неинициализированной переменной.
    Подробнее можно почитать: Энтони Уильямс "Практика многопоточного программирования", с. 100

  • @Ivan.V.Petrov
    @Ivan.V.Petrov 2 роки тому +6

    Спасибо за лекцию, включил на фоне, чтобы уснуть)

  • @sabotoff932
    @sabotoff932 2 роки тому +3

    Лекция отличная, большое спасибо!
    Я пишу под Windows и всегда пользовалься нативными потоками OC для распараллеливания. Недавно попробовал работать с потоками c++. Там все продумано и логично. Код пишется легко. Но мне показалось, что внутренний библиотечный пул пытается экономить ресурсы. Скажем при 8-ми ядрах на десктопе, мне не удалось добиться одновременной работы 8-ми потоков. Работают не более 6. Остальные стоят в очереди. Еще один неприятный момент: невозможно создать поток в состоянии suspend(?) и точно отследить начало работы потока. Видимо, это плата за переносимость. Нативные потоки в Windows гибче.

  • @philosophoflove
    @philosophoflove 2 роки тому +2

    Супер препод.

  • @AndersonSilva-dg4mg
    @AndersonSilva-dg4mg 4 роки тому +1

    Спасибо большое!

  • @usergnusmas6879
    @usergnusmas6879 4 місяці тому

    Есть вероятность, что при разбиении по потокам, мультитрэйдинг не будет учитываться. Т.е. на шестиядерном проце, будет использовано только шесть потоков.

  • @IExSet
    @IExSet 2 роки тому

    44:45 Во всех примерах, где объявляется unique_lock c defer_lock, последующий вызов lock производится на них же, а не на исходные мьютексы. Почему здесь не так ? Сработает ли unique_lock если не вызывать на них lock ??? future_status - переводится как "будущий статус".

  • @WowSoLaggy
    @WowSoLaggy Рік тому

    А разве в примере на 1:00:00 не будет дедлока?
    sending_thread функция лочит мьютекс mt и зависает в вечном ожидании непустого буфера (не освобождая мьютекс) на строке 10. Соответственно, при вызове функции on_frame она задедлочится навсегда в ожидании мьютекса mt на строчке 18.

    • @dominuspiritus
      @dominuspiritus 2 місяці тому

      В момент вызова wait мьютекс отпускается

  • @КитайскийГородовой-к6л

    Чем Event отличается от Condition Variable? Судя по функционалу - практически одно и то же.

  • @zakharkulbachenko3433
    @zakharkulbachenko3433 3 роки тому +12

    а как мьючить лотекс?

  • @VeloVetal
    @VeloVetal Рік тому

    std::async(std::launch::async, ...); -- как то мало асинков, надо больше, больше!

  • @maxpo801
    @maxpo801 2 роки тому

    1:30:25 volatile

  • @kaganyevgeny
    @kaganyevgeny 9 місяців тому

    коробит слух когда пи ти ар называют пэ тэ эр :))))

  • @Иван-о3ъ6ь
    @Иван-о3ъ6ь 22 дні тому

    Лектор в целом норм, но английские слова проглатыевает просто жесть : майкрософтский превратился в мский, и всё остальное в том же духе