Есть компонент process. Этот компонент использует shm. Кусок этой памяти представляет собой массив. Каждая ячейка в этом массиве называется slot.
Процесс бывает двух типов master и worker. При каждом рестарте или релоаде мастер “увольняет” старые слоты, старые воркеры завершаются, а новые воркеры “захватывают” свободные слоты.
Первое:
Компонент process занимается и вопросами shm и вопросами мастера и вопросами воркера.
Решение: пилим его на три компонента: shm, master и worker. А slot остается как есть и относится к shm. Ок, делаем.
Второе:
Для ускорения работы, каждый воркер при запуске один раз оббежав большой массив, должен закешировать данные из слотов, актуальных к его циклу жизни и знать о всей своей бригаде. Ок, делаем.
Третье:
Таким образом у нас появляется еще один вид слота. Структурки весьма похожи, но предназначены для разных целей.
Помогите найти синоним к слову “slot” или иные названия для этих видов “слотов” подходящие по контексту.
З.Ы.: Анон, жги!

Что представляет собой слот, я так и не понял. Это флаг? Указатель? Индекс? Данные для обработки?
В разделяемой памяти хранится массив структур, которые сейчас названы слотами. В каждом таком слоте хранится флаг состояния (свободен, занят, уволен, завершаюсь), индекс, равный индексу этого слота в массиве слотов и пид воркера, захватившего этот слот, если он захвачен.
А кешированые слоты (второй вид) отличаются отсутствием пида, наличием указателя next и в поле индекса хранится порядковый индекс кешированого слота, а не индекс слота из разделяемой памяти.
Да подожди ты! Я только сел возле компьютера.
Task
Не уверен что понял.
Я может чего то не понимаю, но твоя программа случаем не занимается созданием множества копий одних и тех же данных в оперативной памяти?
Как частный случай – да. Воркеры (это отдельные процессы) обмениваются кучей данных через пайпы/сокетные пары. Инициатор какой-то части уникальных данных только один из воркеров, но остальные воркеры всегда получают от инициатора копию этих данных.
Однако, эта функциональность уже никак не относится к моему вопросу. И не понятно, как это поможет тебе придумать названия.
Я сам столкнулся с такой проблемой и принял решение копировать данные, для того что бы избежать ошибок. Но в моём случае, это просто сообщения в telegram и ответы на них. Если бы это было бы чем то побольше, то заморочился бы передавать исключительно по указателю.
Задание, exercise.
Это не задания. Слоты перезанимаются только между перезапусками приложения. И только хранять пару-троку флагов для удобства доступа “по ключу”.
Я запутался пытаясь понять логику твоей программы.
Перечитай с самого начала.
Попробовал. Запутался ещё больше.
Ну, тогда не помогай. Джуны, вона, вообще сразу слились ))
Уже присутствует. Да и врядли можно назвать тасками что-то не динамическое, доступное разным процессам и хранящее тупо флаги.
Опять не понял?