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

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

Первое:

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

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

Второе:

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

Третье:

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

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

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

  • deep-purpleOP
    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

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

        А кешированые слоты (второй вид) отличаются отсутствием пида, наличием указателя 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

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