NO_BRAIN_CPP Telegram 541
Кресты на моей кукухе
Некрасивая метрика, проблему с которой я сходу (к своему стыду) не понял — время от отправки сообщения до его чтения. На старой очереди это было <1 мкс, на новой >40мкс в медиане. Ночью меня осенило: я же разогнал писателей. Читатель снова стал захлёбываться.…
В общем, схематоз:

Было: MPMC FAA-очередь занятых элементов + такая же очередь свободных элементов
Стало: MPMC FAA-очередь занятых элементов + битсет, отвечающий за свободные элементы

Битсет имеет операции push(index) и take_any() -> optional<size_t>
Выглядит как массив атомиков, в которых один битик соответствует одному индексу. Я хотел минимизировать контеншн, потому
1. массив побит на блоки по 16 атомиков (128 байт, 1024 элемента-битика)
2. каждый поток имеет свой "родной" блок

На take_any() мы ищем битик в родном блоке. Если не нашли — начинаем проходить по чужим блокам. Прошли круг и ничего не нашли — очень жаль, вываливаемся

Есть у меня большие сомнения в линеаризуемости этого добра) Хотя пока читатель один, должно сходиться

Дальше буду смотреть, есть ли прок от замены MPMC очереди на MPSC, раз мне больше всё равно не надо
🔥2



tgoop.com/no_brain_cpp/541
Create:
Last Update:

В общем, схематоз:

Было: MPMC FAA-очередь занятых элементов + такая же очередь свободных элементов
Стало: MPMC FAA-очередь занятых элементов + битсет, отвечающий за свободные элементы

Битсет имеет операции push(index) и take_any() -> optional<size_t>
Выглядит как массив атомиков, в которых один битик соответствует одному индексу. Я хотел минимизировать контеншн, потому
1. массив побит на блоки по 16 атомиков (128 байт, 1024 элемента-битика)
2. каждый поток имеет свой "родной" блок

На take_any() мы ищем битик в родном блоке. Если не нашли — начинаем проходить по чужим блокам. Прошли круг и ничего не нашли — очень жаль, вываливаемся

Есть у меня большие сомнения в линеаризуемости этого добра) Хотя пока читатель один, должно сходиться

Дальше буду смотреть, есть ли прок от замены MPMC очереди на MPSC, раз мне больше всё равно не надо

BY Кресты на моей кукухе




Share with your friend now:
tgoop.com/no_brain_cpp/541

View MORE
Open in Telegram


Telegram News

Date: |

2How to set up a Telegram channel? (A step-by-step tutorial) For crypto enthusiasts, there was the “gm” app, a self-described “meme app” which only allowed users to greet each other with “gm,” or “good morning,” a common acronym thrown around on Crypto Twitter and Discord. But the gm app was shut down back in September after a hacker reportedly gained access to user data. With the “Bear Market Screaming Therapy Group,” we’ve now transcended language. Your posting frequency depends on the topic of your channel. If you have a news channel, it’s OK to publish new content every day (or even every hour). For other industries, stick with 2-3 large posts a week. Among the requests, the Brazilian electoral Court wanted to know if they could obtain data on the origins of malicious content posted on the platform. According to the TSE, this would enable the authorities to track false content and identify the user responsible for publishing it in the first place.
from us


Telegram Кресты на моей кукухе
FROM American