Ryner Reinhardt
А, ну это можно убрать
Ryner Reinhardt
Например?
Ryner Reinhardt
А как еще то?
Anonymous
Здравствуйте, не подкскажите библиотеки для Telegram на С++, пожалуйста
Ryner Reinhardt
За макс размер должна отвечать переменная tokensColumns
Aidar
это точно про.?
Aidar
с такими заявлениями вам в [беркусляндию](@supapro)
🦥Alex Fails
Неожиданно
Крылатый
Разрушительный сбой. Мне нравится)
🦥Alex Fails
Fatal error (?)
Anatoly
ошибку из messagebox можно положить в буфер обмена через Ctrl+C
Igor
есть bool flag;, который один поток единожды устанавливает в true, а второй многократно проверяет на == true
я же правильно понимаю, что несмотря на кажущуюся "атомарность" флаг всё равно должен быть atomic<bool>, чтобы не навлечь UB и неправильную расстановку барьеров памяти?
Anonymous
хотя обновлений студии уже дофига было, они вряд ли его пофиксят
Anonymous
Из их форумов я понял, что баг висит уже несколько месяцев, но ещё не исправили
🦥Alex Fails
Anton
Но может и не помочь :)
Anton
если например читатель после чтения делает долгую работу, писатель может изменить атомик и, но читатель про это не узнает...
Anton
мьютекс правильней будет в таком случае
Igor
Anton
в процессе выполнения do_conditional_work(); flag может стать false
Anton
так как писателю никто не запрещает его поменять
Igor
Anton
понятия не имею
Anton
ок или не ок определяет автор программы...
Anton
я к тому что если повесить lock_guard на мьютекс в цикле читателя и лочить этот же мьютекс в писателе при смене флага, таких эффектов не будет
Anton
инвариант будет сохранен
Anton
замена bool на atomic<bool> 99% ничего здесь не даст
Igor
мне нужно из одного треда в вечном цикле, просигнализировать другому треду в вечном цикле, что программа перешла в состояние X и в нём останется до конца времён; второй тред после такого перехода должен начать выполнять дополнительные действия
постоянно лочить мьютекс ради изменяющихся ровно единожды данных выглядит ещё большим оверкиллом, чем атомик
🐙 Antony
Alexander "SonnySlave"
Anton
сигнализируют при помощи conditional_variable
Igor
Дык атомарная переменная решит все проблемы
ну вот я к ней и склоняюсь) просто напрягла фраза Антона про "писатель может изменить атомик и, но читатель про это не узнает...", я решил что есть какой-то ещё подводный камень, которого я не вижу
Alexander "SonnySlave"
пусть хоть в цикле со слипом проверяет
🐙 Antony
Aidar
Igor
Aidar
вангую изобретение std::future
Aidar
atomic_flag гарантировано локфри
Igor
вангую изобретение std::future
сванговал мимо, тут скорее изобретение одноразового сигнала-слота, чтобы уведомить гуй приложения о том, что аппаратный видеодекодер отрендерил первый кадр видеопотока, и с экрана можно снимать превьюшку
Aidar
Igor
так вроде не мимо
future это разве не про auto f = start_work([]{ ... }); do_some_stuff(); f.wait_for_finish(),
Aidar
почти
Aidar
это очередь на 1 элемент который еще и состояние окончания работы
Aidar
он может быть void
Aidar
и еще оно может в эксепшны
Alexander "SonnySlave"
Igor
да-да, уже вкурил, спс
Berkus
Igor
кондвар позволяет просто проверять значение, без ожидания на себе?
Berkus
нет, он засыпает пока ему не посигналят
Berkus
а вообще атомик с заборами тут достаточен если тебе засыпать не надо
Berkus
просто про заборы не забывай
Igor
Igor
memory fence / memory barrier
Vsevolod
а зачем забор для атомика?
Vsevolod
ну то есть, оно же само должно ставиться в зависимости от memory model
Vsevolod
а, я думал, ты советуешь напрямую mfence/lfence звать
Berkus
Vsevolod
незачем, это вредный совет
Vsevolod
@Artalus http://preshing.com/20120710/memory-barriers-are-like-source-control-operations/ - хорошая статья
Vsevolod
что значит "атомик сам забор"
Igor
спасибо, заценю
Berkus
это не всегда тот забор, который нужен
🦥Alex Fails
все равно до конца не въехал, как работает забор 😂 надо покурить маны
🦥Alex Fails
у Уильямса в книге тема была, и в других источниках тоже, но все равно не до конца въехал в заборы
Anonymous
🦥Alex Fails
ага, спасибо, да, я понял сразу всё
🦥Alex Fails
это все тяжелое наследие винды типа такого. там таких штук, как забор не было ))
Berkus
🦥Alex Fails
ок, супер
Berkus
я где-то схоронял, если найду скину