The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Multi-Thread Server"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Multi-Thread Server"
Сообщение от TopTiT Искать по авторуВ закладки on 04-Мрт-02, 03:20  (MSK)
Возникла проблема с обработкой огромного количества запросов к серверу...
Если использовать fork() - то это еще одна запись в таблице процессов
Если количество таких запросов может перевалить за несколько тысяч...то произойдет переполнение таблицы процессов и тогда......Может я где-то заблуждаюсь)
В общем хотелось бы обойти эту проблему с помошью thread-ов...
Тогда чем отличаеться thread от полноценного процесса?

Только нигде не нашел пока толкового HELP_а....

ПОМОГИТЕ ЧЕМ МОГИТЕ!

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: Multi-Thread Server"
Сообщение от Z0termaNN emailИскать по авторуВ закладки on 04-Мрт-02, 05:27  (MSK)
>Возникла проблема с обработкой огромного количества
>запросов к серверу...
>Если использовать fork() - то это
>еще одна запись в таблице
>процессов
>Если количество таких запросов может перевалить
>за несколько тысяч...то произойдет переполнение
>таблицы процессов и тогда......Может я
>где-то заблуждаюсь)
> В общем хотелось бы обойти
>эту проблему с помошью thread-ов...
Ты будешь смеяться, но в фрюниксах threads
реализованы как отдельные процессы.
>
>Тогда чем отличаеться thread от полноценного
>процесса?
>
>Только нигде не нашел пока толкового
>HELP_а....
>
>ПОМОГИТЕ ЧЕМ МОГИТЕ!


  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: Multi-Thread Server"
Сообщение от romanSA Искать по авторуВ закладки on 04-Мрт-02, 11:56  (MSK)
>Ты будешь смеяться, но в фрюниксах
>threads

Ну, во-первых, не во всех UNIX-ах это так.

>>Возникла проблема с обработкой огромного количества
>>запросов к серверу...
>>Если использовать fork() - то это
>>еще одна запись в таблице
>>процессов
>>Если количество таких запросов может перевалить
>>за несколько тысяч...то произойдет переполнение
>>таблицы процессов и тогда......Может я
>>где-то заблуждаюсь)

А во-вторых - максимальное число процессов в системе обычно 65535 (размер pid_t). Если тебе этого мало, то с сожалением могу сообщить, что при таком количестве потоков на одно приложение (вне зависимости от того, как реализованы эти потоки, через процессы или native), система будет жутко тормозить при переключении потоков (впрочем как и процессов, что будет для неё легче - зависит от конкретной реализации ОС).

Следовательно, выход - уменьшать время обработки запроса и/или переадресовывать запросы на др. сервера (но это уже отдельная песня, да ещё проблемы с балансировкой нагрузки...)


  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: Multi-Thread Server"
Сообщение от Dmitrij emailИскать по авторуВ закладки on 06-Мрт-02, 16:14  (MSK)
>Тогда чем отличаеться thread от полноценного
>процесса?

Тем что для нового процесса создается новое виртуальное пространство. Т.е. происходит копирование всех переменых программы статические/автоматические/и даже динамические (кроме того создаются еще определенные системные структуры). Взаимодействие между процессами обычно организовывается посредством различных видов каналов или сигналов. В отличии от порожденных процессов, все thread работают в том же адресном пространстве процесса и могут взаимодействовать друг с другом по средством общих структур данных, например глобальных переменных. При этом возникает необходимось их синхронизации при доступе к одним и тем же данным. Синхронизация делается с помощью мутексов, семафоров и т.д. Благодаря тому, что для thread'ов не надо наличие отдельного виртуального пространства они гораздо "легче" для системы (хотя это зависит от реализации). Существует несколько стандартов на API для thread'ов. Однин от фирмы Sun, а другой определен в POSIX.

>Только нигде не нашел пока толкового
>HELP_а....

Можно почитать книгу "Программирование на С++ для UNIX" или в мане что-нибудь о pthread_create.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

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




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру