Size: a a a

2020 November 18

АК

Александр Караев... in pro.algorithms
неправильно выразился - после каждого цикла итерации я проверяю ещё два массива на изменения под мьютексами
источник

MS

Mikola Summer Duck in pro.algorithms
Александр Караев
неправильно выразился - после каждого цикла итерации я проверяю ещё два массива на изменения под мьютексами
Ты уверен что именно это будет твоим боттлнеком?
источник

MS

Mikola Summer Duck in pro.algorithms
Если уверен делай локфри опердень как я выше предлагал.
источник

MS

Mikola Summer Duck in pro.algorithms
Еще и кешлокалити себе устроишь таким образом в среднестатистическом случае.
источник

m

magras in pro.algorithms
Mikola Summer Duck
Но он ведь и так к этому сводится, только без копии. Лочишь один массив и итерируешь. В конце модифицируешь согласно двум другим массивам. Всё.
atomic<shared_ptr>::load в большинстве случае это load + cas. При этом даже в контрольный блок shared_ptr не нужно ходить. По сравнению с локом, это выглядит намного быстрее.
источник

АК

Александр Караев... in pro.algorithms
Mikola Summer Duck
Ты уверен что именно это будет твоим боттлнеком?
я уверен лишь в том, что я буду очень часто итерироваться, очень редко менять (т.к. это коллбэки - в 99% случаев они прописываются на инициализации чего-либо, а остальное - крайний случай)
источник

MS

Mikola Summer Duck in pro.algorithms
magras
atomic<shared_ptr>::load в большинстве случае это load + cas. При этом даже в контрольный блок shared_ptr не нужно ходить. По сравнению с локом, это выглядит намного быстрее.
Так тебе в любом случае придётся копировать массив целиком, не только шейрд поинтер.
источник

АК

Александр Караев... in pro.algorithms
более того, если я скажу, что количество - порядка десятков, то думаю, что меня забанят в этом чате
источник

m

magras in pro.algorithms
Mikola Summer Duck
Так тебе в любом случае придётся копировать массив целиком, не только шейрд поинтер.
Только при изменении же.
источник

MS

Mikola Summer Duck in pro.algorithms
А ну ещё вы помните что локи чрезвычайно дешёвые в случае отсутствия контеншна.
источник

MS

Mikola Summer Duck in pro.algorithms
Ценой в атомик (ну может чуть дороже).
источник

m

magras in pro.algorithms
Mikola Summer Duck
А ну ещё вы помните что локи чрезвычайно дешёвые в случае отсутствия контеншна.
Да, при полном отсутствии контеншена, лок будет быстрее. С этим не поспоришь.
источник

MS

Mikola Summer Duck in pro.algorithms
А ну и более того, тебе нужно будет защититься от случая одновременной модификации.
источник

MS

Mikola Summer Duck in pro.algorithms
Да, точно, копионрайт для модификации не работает.
источник

АК

Александр Караев... in pro.algorithms
Mikola Summer Duck
А ну и более того, тебе нужно будет защититься от случая одновременной модификации.
хм, об этом я не подумал
источник

m

magras in pro.algorithms
Mikola Summer Duck
А ну и более того, тебе нужно будет защититься от случая одновременной модификации.
Работает точно так же как всегда в атомиках - через cas.
источник

MS

Mikola Summer Duck in pro.algorithms
magras
Работает точно так же как всегда в атомиках - через cas.
Неа. Ты массив через cas будешь копировать?
источник

MS

Mikola Summer Duck in pro.algorithms
Плюсы конечно предоставят тебе такую семантику
источник

MS

Mikola Summer Duck in pro.algorithms
Но это не есть хорошая идея.
источник

m

magras in pro.algorithms
Mikola Summer Duck
Неа. Ты массив через cas будешь копировать?
Скопировал, модифицировал, попробовал заменить. Если опередили, повторяем.
источник