Nikita
(мне для тестов надо)
Nikita
B
conditional variable?
Nikita
короче херня в чём
Nikita
если я вызову future.get() то заблокируюсь, поэтому дернуть условную переменную не смогу
Alexander "SonnySlave"
Alexander "SonnySlave"
в одном потоке установил значение и сделал notify
Alexander "SonnySlave"
в другом при нотифае дёргаешь future.get
Nikita
в общем, мне нужно проэмулировать ситуацию, когда я пытаюсь забрать ещё не готовое значение
Alexander "SonnySlave"
ну, ок. сначала notify, потом ставь значение
Alexander "SonnySlave"
тогда поток заблокируется и всё
Nikita
где гарантия, что тут race condition не будет?
Alexander "SonnySlave"
напиши кодом тогда, чего хочешь
Alexander "SonnySlave"
на пастебин куда-нибудь
Andrei
Andrei
Тебе же по условию именно get надо вызвать после.
Andrei
Ой. Я криво прочитал, пардон.
Nikita
напиши кодом тогда, чего хочешь
вопрос то как раз в том, как написать такой код
представь, что у меня есть какое то долгое вычисление, которое в конце заполняет промиз
я, как и положено, наружу отдаю фьючу, и начинаю вычислять.
мне нужно проэмулировать ситуацию, когда пользователь позвал у фьючи get строго раньше, чем я закончил вычисление (и, соответственно, заполнил промиз)
Nikita
а слипы втыкать неочень хочется
Andrei
Не, в общем случае никак не решить.
Andrei
Никто не сможет тебе гарантировать, что тред застопорился в get
Andrei
Собсна потому что к этому моменту никакого кода ты уже исполнить не можешь.
Andrei
Поэтому только слипы с разумно большой задержкой.
Andrei
Код с нотифаями и cv очевидно не поможет.
Constantine
хм... у меня для таких тестов есть DAG над conditional variable :)
Nikita
Constantine
это как?)
ну я задаю в виде DAG правила из точек в потоках выполнения, после чего через conditional_variable блокируюсь если кто-то пытается нарушить порядок
Andrei
Constantine
Это не решит его проблему.
ну если его задача одновременно не блокироваться и выполнить все в нужном порядке, то её нельзя решить по очевидным соображениям
Andrei
.get() это блокирующая операция. По определению невозможно проверить, что мы в неё зашли.
Andrei
Если только она сама атомарно где-то не ставит флаги (чего она в данном случае не делает как раз).
Constantine
но можно проверить, что точка перед get() пройдена раньше, чем write_value()
Andrei
И это ничего не гарантирует.
Constantine
это максимальная гарантия без внедрения в get разумеется
Nikita
интересно, как stl в этом моменте тестируют
Constantine
потому что требование синхронизации кода внутри get и другого потока не может быть записано без внедрения в get
Constantine
у меня в любом случае совсем другие future/promises, так что детали про stl я не знаю
Andrei
> инвертированных средств
Fox
У нас появилось зеркало в Matrix: #procxx:matrix.org
Alexander "SonnySlave"
прошу добавить инфы про этот сам Matrix, как начать юзать и так далее
Alexander "SonnySlave"
актуально, так как подавляющее большинство чатика сидит из РФ
Matwey
Matrix это то, что сделано поверх DHT?
Matwey
А, точно
Matwey
Я когда пробовал Ring, он за сутки съел у меня 2 гигабайта трафика на телефоне и мне пришлось продавать МТСу почку
Alexander "SonnySlave"
Кстати, можно переходить на ТамТам
Anatoly
Alexander "SonnySlave"
Вместо телеги вот это норм будет ещё: https://tamtam.chat/
Скоро крестовый чатик туда перенесём
Dmitry
почему не icq, они что исходники потеряли?
Alexander "SonnySlave"
это точно не заблочат в РФ
Alexander "SonnySlave"
Matwey
> Забыли купить Валентинку? Бывает... Наши программисты изобрели Валентина, бота всех влюбленных! Валентин присылает красивые и смешные открытки, придумывает оригинальные поздравления, а еще у него есть секретный режим для тех, кто не любит этот праздник...
> Рассказываем, как работает наш бот Валик. Например, у вас есть красивая Валентинка, сделанная своими руками, но вы не знаете, что написать? Нет проблем, у Валентина есть готовые тексты для оригинального поздравления:
Matwey
> Сто тысяч хомячков, мопсиков и котиков не сравнятся с тобой по мягкости и мимимишности!
Dmitry
Alexander "SonnySlave"
https://tt.me/procxx
Matwey
Я лучше назад в Jabber вернусь
Matwey
Там Дедфуд опять же
Stanislav
Matwey
В @supapro знают, мы ничего не умеем, так просто тут
Anonymous
Fox
Alexander "SonnySlave"
а пока что не завидуй и вливайся в ТамТам!
Matwey
Matwey
Году в 2009-м кажется
Alexander "SonnySlave"
Anatoly
А в чат С++ Russia Александреску заджойнился
Nikita
Alexander "SonnySlave"
Alexander "SonnySlave"
слыш-слыш, ты чо
Alexander "SonnySlave"
Alexander "SonnySlave"
🐙 Antony
Alexander "SonnySlave"
самое время спрашивать про автографы, если кому надо