Я расскажу о том, как наладить многопоточное взаимодействие в браузере без использования мьютексов и условных переменных. Доклад будет интересен тем, кто пишет на языке C++ и разрабатывает многопоточные сервисы и приложения.
14. Почему не std::function
▌ std::function еще не было
▌ Функционал std::function шире
▌ std::function делает копию внутреннего состояния при копировании
▌ Неявные касты вида std::function<int(int)> -> std::function<void(int)>
34. Плюсы
▌ Данные привязаны к конкретным потокам, не требуются
примитивы синхронизации
▌ Можно скрыть знание того, на каком потоке будет
выполняться задача, а также поток выполнения коллбека
▌ Проверяем поток, на котором происходит выполнение
35. Минусы
▌ Код должен быть асинхронным
▌ Теряем возможность использования исключений
▌ В некоторых случаях использование мьютексов может быть
быстрее
36