Size: a a a

2021 July 26

MW

Mohammad Wolf in Embedded Group
Тогда барьер будет ждать пока не завершится поток по записи
источник
2021 July 27

VO

Vyacheslav Olkhovche... in Embedded Group
Одним примитивом ты не обойдешься если хочешь делать все эффективно
источник

VO

Vyacheslav Olkhovche... in Embedded Group
Т.е. конечно ты можешь со стороный записи после каждого батча дергать барьер или что то но это будут большие накладные расходы если поток интенсивный
источник

VO

Vyacheslav Olkhovche... in Embedded Group
Конечно если там условно 100байт раз в секунду то похуй
источник

VO

Vyacheslav Olkhovche... in Embedded Group
А если гагабайт в секунду то надо быть аккуратным
источник

MW

Mohammad Wolf in Embedded Group
Блин, я это тоже понимаю. Есть идеи еще, кроме применения барьеров?
источник

VO

Vyacheslav Olkhovche... in Embedded Group
Кольцевой буфер. Указатель куда пишем. Отккда читаем. Атомарные флаги стою в мютексе например. Мютекс. Если чтение видит сравнивая указатели что данных нет то ставит флаг и блочится на мутексе. Запись когда видит флаг дергает мутеес. Чтение после этого флаг снимает. Например так. Очень криво и расчет на то что чтение постоянно данные насвпает
источник

MW

Mohammad Wolf in Embedded Group
Работа мутексов тоже ведь занимает время
источник

MW

Mohammad Wolf in Embedded Group
А про кольцевой буфер я не понял. Как сделать так, что бы второй поток читал тогда, когда другой поток записал?
источник

VO

Vyacheslav Olkhovche... in Embedded Group
Да. Но тут они будут срабатывать только когда нет данных
источник

VO

Vyacheslav Olkhovche... in Embedded Group
Тут наоборот - надо останавливаться если нет данных
источник

VO

Vyacheslav Olkhovche... in Embedded Group
Когда они появятся второй поток надо растормозить
источник

m

mirmik in Embedded Group
Арбитраж мьютексов и прочих примитивов, конечно, занимает время, но вообще, блокировки экономят время процессора, а не наоборот. Выгода будет выше, чем затраты на использование  примитивов синхронизации.
источник

m

mirmik in Embedded Group
Хотя, на многоядерной архитектуре, наверно можно заморочиться каким-то хитрым балансером, который будет отдавать излишки времени читающего потока на второстепенные задачи и тогдапотоки никогда тормозиться не будут...

Но это как-то бредово.
источник

MW

Mohammad Wolf in Embedded Group
А в кольцевом буфере опять условия стоят на проверку выхода границы буфера?
источник

VO

Vyacheslav Olkhovche... in Embedded Group
Не понял
источник

MW

Mohammad Wolf in Embedded Group
источник

MW

Mohammad Wolf in Embedded Group
Я про строки "if (buf->idxIn >= buf->size) buf->idxIn = 0;" из RING_Put и "if (buf->idxOut >= buf->size) buf->idxOut = 0;" из RING_Pop
источник

MW

Mohammad Wolf in Embedded Group
Если эти 2 функции крутить в цикле, то время займет на условия. Правильно я понял работу этих функций?
источник

l

linxuil in Embedded Group
100к за квадрат это обычные дома + первичка в 20-30 минутах от метро

150к это обычные квартиры в кирпичных домах близко к метро + вторичка

200к это скорее комфорт, чем бизнес.

Бизнес наверное от 250 где то. Да и бизнесов в городе не так много строиться. Выборка довольно скудная получается.

Вот русский дом, вроде бизнес, и это далеко не 250к за м2.
https://www.lsr.ru/spb/kvartiry-v-novostroikah/russkiy-dom/
источник