На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! В разделе обсуждаются следующие темы:
1) Процесс разработки программного обеспечения.
2) Определение требований к программному обеспечению.
3) Составные части и процесс проектирования (см. Шаблоны проектирования).
4) Документирование программного продукта(проекта).
5) Руководство разработкой программного обеспечения.
6) Проектирование пользовательского интерфейса.
7) Контроль версий проекта (см. Управление версиями в Subversion, Стратегии использования svn).
Модераторы: ElcnU
  
> WebApplication & threads
    Приветствую!

    Собирался таки начать писать прогу класса WebApplication. Концептуально в ней можно выделить ряд подсистем:

    1) Работа с сетью по HTTP/HTTPS
    2) Работа с БД
    3) Работа с файловой системой
    4) Подсистема вычислений (собственно бизнес-логика)

    Допустим, приложение будет работать на компе с N ядрами. Как вы считаете сколько потоков нужно выделять на каждую подсистему и почему? Можно ли как-то определиться с этими параметрами при старте/в процессе выполнения?

    По поводу БД - есть формальные ограничение по распараллеливанию операций только для SQLite.
    Если брать, к примеру, PostgreSQL, то таких ограничений нет.

    Приветствуются любые соображения.

    Добавлено
    ЗЫ: Совсем забыл, цель распараллеливания - обеспечение равномерной загрузки ресурсов компа (CPU/FS/NET)
      А чего бы тебе не сделать как Node.JS - весь пайплайн в один поток, но асинхронно? Это избавит от энного количества проблем, связанных с синхронизацией. А с SQLite надо иметь в виду, что он не поддерживает одновременных транзакций из разных потоков по одному коннекшену. Это может быть существенным ограничением.
        Цитата Flex Ferrum @
        А с SQLite надо иметь в виду, что он не поддерживает одновременных транзакций из разных потоков по одному коннекшену. Это может быть существенным ограничением.

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

        Цитата Flex Ferrum @
        А чего бы тебе не сделать как Node.JS - весь пайплайн в один поток, но асинхронно?

        Это ты про сетевую подсистему? Типа один поток на неблокирующих сокетах?
          Цитата JoeUser @
          Тут я читал, что если "писателей" нет, то читателей параллельных можно наплодить сколь угодно.

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

          Добавлено
          Цитата JoeUser @
          Это ты про сетевую подсистему? Типа один поток на неблокирующих сокетах?

          Да.
            Цитата Flex Ferrum @
            Так то да. Но если появится несколько писателей (в разных потоках), которые захотят транзакциями пощёлкать - то будет очень весесло.

            Эт да. Об этом думал. Но тут, считаю, нужно как-то разруливать по штампу времени. "До" - запускать всех "читателей". Потом блокировка и запуск одного "писателя". Ну и далее в том же ключе.

            Цитата Flex Ferrum @
            Да.

            Тож к этому склоняюсь. На сокетах - вычислений нуль (взял, отдал). А вот "воркеры" пусть уже конкурируют.

            Добавлено
            Flex Ferrum, в плане кросс-платформенного асинхронного I/O - чую паттерн "мост" ... я прав или да? :lol:
              Паттерн "реактор" и модель акторов чую я!
                :blink: не было такого в моей книжке!
                Пора "освежать библиотеку" :lol:
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0241 ]   [ 15 queries used ]   [ Generated: 19.03.24, 09:13 GMT ]