170 похожих чатов

Есть 2 отдельных потока. Один пишет в массив/очередь, другому нужно

при поступлении новых данных в этот массив/очередь - сразу их начать обрабатывать.

Сейчас это решено через while , в котором постоянно идет проверка нет ли новых данных. Но даже со sleep - бесконечность while слишком грузит проц. Да и как то кривовато мне кажется решение со sleep-ами.

Как можно подать знак второму потоку что пора ему считать данные? Чтобы он не грузил проц в постоянном проверянии обновлений?

18 ответов

12 просмотров

Предложение немного из другой степи, но на qt подобное реализуется через сигнально слотовую систему. Говорят, что это паттерн наблюдатель. А если на десктоп пишешь программу обработки данных по ком порту и ещё не поздно, то советую смотреть в сторону qt, как сделал однажды я =) такие вопросы из коробки решаются

jon pedro
Предложение немного из другой степи, но на qt подо...

Да, проще всего будет решить проблему через этот паттерн

Виктор-Nekrasov Автор вопроса
jon pedro
Предложение немного из другой степи, но на qt подо...

Понял, спасибо. Как раз за изучение qt взялся. Переделывать поздновато, но, на поздних стадиях реализации столкнулся с тем что комп дико тормозить начинает. Так что придется. Кстати, по результатам испытаний, раюота с массивами примерно на 30% быстрее оказалась, чем работа с векторами. И памяти меньше ест.

Виктор Nekrasov
Понял, спасибо. Как раз за изучение qt взялся. Пер...

Я бы не закладывался на твои бенчмарки, да и странно сравнивать работу с массивом и вектором — они для разных целей

Виктор Nekrasov
Почему не закладывался бы?

Потому что бенчмарки легко сделать неправильно и сложно правильно

Без ивентов ты это не сделаешь без бизи вейта, а ивентов нет в стандарте, Хотя конечно можно через атомики ещё... Не, нельзя

mutex + condition variable + atomic_bool

Виктор-Nekrasov Автор вопроса
Ilya Zviagin
Чета как бред звучит

Что именно как бред звучит?

Виктор Nekrasov
Что именно как бред звучит?

что работа с массивами на 30% быстрее, чем с векторами

Виктор-Nekrasov Автор вопроса
Alexander "SonnySlave" Zaitsev
что работа с массивами на 30% быстрее, чем с векто...

Почему? Вектор, вроде более сложная структура, больше памяти занимает. И лежит в куче, а не на стеке.

Виктор Nekrasov
Почему? Вектор, вроде более сложная структура, бол...

ну я хз, что такое "работа" в твоём случае, но даже эта разница играть роли не должна

Виктор Nekrasov
Что именно как бред звучит?

Вот это Кстати, по результатам испытаний, работа с массивами примерно на 30% быстрее оказалась, чем работа с векторами. И памяти меньше ест

Ilya Zviagin
Вот это Кстати, по результатам испытаний, работа...

+ Ну вот, теперь неделю спать не смогу, буду думать что такого мог джун (да пусть даже мидл) сделать с массивами, что оно аж на треть быстрее чем с векторами. Наверное, пора уже мыслить как сеньеру и спрашивать: что он такое творит с векторами, что они у него такие медленные?

Mikhail Kalugin
+ Ну вот, теперь неделю спать не смогу, буду думат...

Говнокод написать - дело нехитрое. Бросил в тело цикла создание вектора, вместо массива - вот, уже деградация

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта