есть все резоны считать, что они реально много времени проводят в толкотне за мьютекс. Тогда — да, это повод для лок-фри подхода. Но какой тогда резон блокировать того, кто эту очередь разгребает?
Толкотня может быть не только за условный мьютекс, под которым ты выполнишь два сложения. Представим полусинтетическую ситуацию, когда раз в минуту у тебя 10 продюсеров выдают 10 сообщений по 10Mб примерно в одно время (в окне 1мс, скажем). А очередь твоя со вшитым аллокатором, и выделение места в ней — атомарный инкремент одной переменной. А вот после выделения места эти 10Мб туда ещё скопировать надо и как-то модифицировать. Тут lock-free пригодится, потому что все 10 продюсеров застолбят себе слоты и одновременно запишут туда по 10Мб, а потом прозвонят в колокольчик, а консюмер проснётся и разгребёт очередь.
Обсуждают сегодня