при поступлении новых данных в этот массив/очередь - сразу их начать обрабатывать.
Сейчас это решено через while , в котором постоянно идет проверка нет ли новых данных. Но даже со sleep - бесконечность while слишком грузит проц. Да и как то кривовато мне кажется решение со sleep-ами.
Как можно подать знак второму потоку что пора ему считать данные? Чтобы он не грузил проц в постоянном проверянии обновлений?
Предложение немного из другой степи, но на qt подобное реализуется через сигнально слотовую систему. Говорят, что это паттерн наблюдатель. А если на десктоп пишешь программу обработки данных по ком порту и ещё не поздно, то советую смотреть в сторону qt, как сделал однажды я =) такие вопросы из коробки решаются
Да, проще всего будет решить проблему через этот паттерн
Понял, спасибо. Как раз за изучение qt взялся. Переделывать поздновато, но, на поздних стадиях реализации столкнулся с тем что комп дико тормозить начинает. Так что придется. Кстати, по результатам испытаний, раюота с массивами примерно на 30% быстрее оказалась, чем работа с векторами. И памяти меньше ест.
Я бы не закладывался на твои бенчмарки, да и странно сравнивать работу с массивом и вектором — они для разных целей
Почему не закладывался бы?
Потому что бенчмарки легко сделать неправильно и сложно правильно
Чета как бред звучит
Без ивентов ты это не сделаешь без бизи вейта, а ивентов нет в стандарте, Хотя конечно можно через атомики ещё... Не, нельзя
Не в разных потоках...
mutex + condition variable + atomic_bool
Что именно как бред звучит?
что работа с массивами на 30% быстрее, чем с векторами
Почему? Вектор, вроде более сложная структура, больше памяти занимает. И лежит в куче, а не на стеке.
ну я хз, что такое "работа" в твоём случае, но даже эта разница играть роли не должна
Вот это Кстати, по результатам испытаний, работа с массивами примерно на 30% быстрее оказалась, чем работа с векторами. И памяти меньше ест
+ Ну вот, теперь неделю спать не смогу, буду думать что такого мог джун (да пусть даже мидл) сделать с массивами, что оно аж на треть быстрее чем с векторами. Наверное, пора уже мыслить как сеньеру и спрашивать: что он такое творит с векторами, что они у него такие медленные?
Говнокод написать - дело нехитрое. Бросил в тело цикла создание вектора, вместо массива - вот, уже деградация
Обсуждают сегодня