Есть компонент process. Этот компонент использует shm. Кусок этой памяти представляет собой массив. Каждая ячейка в этом массиве называется slot.

Процесс бывает двух типов master и worker. При каждом рестарте или релоаде мастер “увольняет” старые слоты, старые воркеры завершаются, а новые воркеры “захватывают” свободные слоты.

Первое:

Компонент process занимается и вопросами shm и вопросами мастера и вопросами воркера.

Решение: пилим его на три компонента: shm, master и worker. А slot остается как есть и относится к shm. Ок, делаем.

Второе:

Для ускорения работы, каждый воркер при запуске один раз оббежав большой массив, должен закешировать данные из слотов, актуальных к его циклу жизни и знать о всей своей бригаде. Ок, делаем.

Третье:

Таким образом у нас появляется еще один вид слота. Структурки весьма похожи, но предназначены для разных целей.

Помогите найти синоним к слову “slot” или иные названия для этих видов “слотов” подходящие по контексту.

З.Ы.: Анон, жги!

  • rezedent12
    link
    fedilink
    arrow-up
    0
    ·
    3 years ago

    Что представляет собой слот, я так и не понял. Это флаг? Указатель? Индекс? Данные для обработки?

    • deep-purpleOP
      link
      fedilink
      arrow-up
      0
      ·
      3 years ago

      В разделяемой памяти хранится массив структур, которые сейчас названы слотами. В каждом таком слоте хранится флаг состояния (свободен, занят, уволен, завершаюсь), индекс, равный индексу этого слота в массиве слотов и пид воркера, захватившего этот слот, если он захвачен.

      А кешированые слоты (второй вид) отличаются отсутствием пида, наличием указателя next и в поле индекса хранится порядковый индекс кешированого слота, а не индекс слота из разделяемой памяти.

      • rezedent12
        link
        fedilink
        arrow-up
        0
        ·
        3 years ago

        Опять не понял?

        Да подожди ты! Я только сел возле компьютера.

        В разделяемой памяти хранится массив структур, которые сейчас названы слотами. В каждом таком слоте хранится флаг состояния (свободен, занят, уволен, завершаюсь), индекс, равный индексу этого слота в массиве слотов и пид воркера, захватившего этот слот, если он захвачен.

        Task

        А кешированые слоты (второй вид) отличаются отсутствием пида, наличием указателя next и в поле индекса хранится порядковый индекс кешированого слота, а не индекс слота из разделяемой памяти.

        Не уверен что понял.

        Я может чего то не понимаю, но твоя программа случаем не занимается созданием множества копий одних и тех же данных в оперативной памяти?

        • deep-purpleOP
          link
          fedilink
          arrow-up
          0
          ·
          3 years ago

          занимается созданием множества копий одних и тех же данных в оперативной памяти

          Как частный случай – да. Воркеры (это отдельные процессы) обмениваются кучей данных через пайпы/сокетные пары. Инициатор какой-то части уникальных данных только один из воркеров, но остальные воркеры всегда получают от инициатора копию этих данных.

          Однако, эта функциональность уже никак не относится к моему вопросу. И не понятно, как это поможет тебе придумать названия.

          • rezedent12
            link
            fedilink
            arrow-up
            0
            ·
            3 years ago

            Я сам столкнулся с такой проблемой и принял решение копировать данные, для того что бы избежать ошибок. Но в моём случае, это просто сообщения в telegram и ответы на них. Если бы это было бы чем то побольше, то заморочился бы передавать исключительно по указателю.

            Task

            Уже присутствует. Да и врядли можно назвать тасками что-то не динамическое, доступное разным процессам и хранящее тупо флаги.

            Задание, exercise.

            • deep-purpleOP
              link
              fedilink
              arrow-up
              0
              ·
              3 years ago

              Это не задания. Слоты перезанимаются только между перезапусками приложения. И только хранять пару-троку флагов для удобства доступа “по ключу”.

              • rezedent12
                link
                fedilink
                arrow-up
                0
                ·
                3 years ago

                Я запутался пытаясь понять логику твоей программы.

                  • rezedent12
                    link
                    fedilink
                    arrow-up
                    0
                    ·
                    3 years ago

                    Перечитай с самого начала.

                    Попробовал. Запутался ещё больше.

                    • deep-purpleOP
                      link
                      fedilink
                      arrow-up
                      0
                      ·
                      3 years ago

                      Ну, тогда не помогай. Джуны, вона, вообще сразу слились ))

        • deep-purpleOP
          link
          fedilink
          arrow-up
          0
          ·
          3 years ago

          Task

          Уже присутствует. Да и врядли можно назвать тасками что-то не динамическое, доступное разным процессам и хранящее тупо флаги.