Здравствуйте! Спасибо за замечательную лекцию Кажется, на слайде 32 нужно сделать мьютекс mutable, чтобы использовать его в константных методах top() и empty() (если, конечно, имеется ввиду, что он - член класса)
43:10 Константин, возможно стоит убрать повсеместно на слайдах указание типа мьютекса у guards, перейдя на CTAD? Или же вы таким образом ещё и показываете, какой именно мьютекс используется в примере?
Спасибо за лекцию! На 45:21 задаётся вопрос сколько весит lock_guard, и Ваш ответ: "не дороже чем mutex". Имелось же в виду не дороже чем ссылка на мьютекс?
Да вы правы там внутри T&. Я почему-то ожидал что сам мьютекс тоже не слишком тяжёлый т.к. это хендл на объект ядра. Но сейчас проверил и нет, там полноценные 40 байт.
1:14:07 действительно ли scoped_lock тяжелее lock_guard? Говорят "You can consider lock_guard deprecated" и "scoped_lock was (among the multiple mutex stuff) designed as a replacement to lock_guard, since the former could not be modified without breaking ABI". Как думаете?
На th-cam.com/video/xTpAJWe7ZD4/w-d-xo.html вызывается destroy, в котором вручную вызывает деструктор для каждого указателя на объект. Но ведь ::operator new в 73-й строке не создает объекты. Не будет ли при удалении UB ?
Этот класс не предполагается к использованию напрямую. Он имеет смысл только как базовый класс и закладывается на определённые действия которые делает производный.
59:28 еще ни разу нас так жестко не разводили на этом курсе 😆 огромное спасибо за труд, Константин!
Лучший
Спасибо за лекцию! Кстати было бы интересно послушать про случайные числа, спектральные характеристики и энтропию
Хорошая идея для спешала. Я кое-что про это знаю.
Спасибо! Все очень четко и понятно
Константин спасибо вам за лекцию 👍
Надеюсь в дальнейшем будет рассмотрена тема отладки и поиска ошибок в конкурентных приложениях.
Да в следующий раз я поставлю эту задачу и расскажу несколько решений. Но они если что будут неутешительными. Простого способа нет.
@@tilir Спасибо.
Я понимаю что они будут сложными, поэтому и спросил про эту тему))
Будем разбираться.
Здравствуйте! Спасибо за замечательную лекцию
Кажется, на слайде 32 нужно сделать мьютекс mutable, чтобы использовать его в константных методах top() и empty()
(если, конечно, имеется ввиду, что он - член класса)
Это хорошее замечание. Я сознательно не написал код этих методов. Мы это обсудим на следующей лекции.
очень интересно, спасибо огромное за материал! detach() в CG рекомендуют не использовать вообще.
Я тоже видел немного разумных применений для detach.
43:10 Константин, возможно стоит убрать повсеместно на слайдах указание типа мьютекса у guards, перейдя на CTAD? Или же вы таким образом ещё и показываете, какой именно мьютекс используется в примере?
В целом можно. Но мне кажется материал и без того тяжёлый, добавлять поводов для надевания волшебных очков не хочется.
Спасибо за лекцию! На 45:21 задаётся вопрос сколько весит lock_guard, и Ваш ответ: "не дороже чем mutex". Имелось же в виду не дороже чем ссылка на мьютекс?
Да вы правы там внутри T&. Я почему-то ожидал что сам мьютекс тоже не слишком тяжёлый т.к. это хендл на объект ядра. Но сейчас проверил и нет, там полноценные 40 байт.
@@tilir я почему решил переспросить, так потому что помню, что у mutexа нет ни copy, ни move конструкторов (они есть, но deleted)
1:14:07 действительно ли scoped_lock тяжелее lock_guard? Говорят "You can consider lock_guard deprecated" и "scoped_lock was (among the multiple mutex stuff) designed as a replacement to lock_guard, since the former could not be modified without breaking ABI". Как думаете?
Внезапно не тяжелее. Что интересно, он тоже обходится просто ссылкой если мьютекс один. А если не секрет это вы откуда цитируете?
@@tilir ответы стаковерфлоу :)
ни разу не сишник, но очень интересно
29:07 не зачет аудиторий)
На th-cam.com/video/xTpAJWe7ZD4/w-d-xo.html вызывается destroy, в котором вручную вызывает деструктор для каждого указателя на объект. Но ведь ::operator new в 73-й строке не создает объекты. Не будет ли при удалении UB ?
Этот класс не предполагается к использованию напрямую. Он имеет смысл только как базовый класс и закладывается на определённые действия которые делает производный.
Что будет, если в не основном потоке не поймано брошенное исключение?
std terminate разумеется.