Russian Qt Forum
Ноябрь 23, 2024, 05:53
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Работа с сетью
>
Стек или потоки?!
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Стек или потоки?! (Прочитано 9900 раз)
Xeon
Гость
Стек или потоки?!
«
:
Октябрь 18, 2009, 17:48 »
Здравствуйте!
Мне интересен такой вопрос: как лучше организовать серверное приложение (С++), у которого, возможно, много клиентов, с помощью стека или потоков? Т.е. как организовать соединения?
Записан
SABROG
Гость
Re: Стек или потоки?!
«
Ответ #1 :
Октябрь 18, 2009, 18:53 »
Под стеком подразумевается бесконечный цикл в одном потоке, который обрабатывает все соединения?
Я бы наверно вынес в отдельные потоки. В зависимости от мощности системы ограничил бы количество потоков скажем до 50 и разделил количество клиентов на количество потоков. Можно например повесить на один поток 50 клиентов, при подключении нового клиента создается еще один поток и новые клиенты добавляются уже в него. Возможно как-то перемещал бы клиентов между потоками, чтобы можно было освободить ресурсы. Типа дефрагментация.
Записан
Xeon
Гость
Re: Стек или потоки?!
«
Ответ #2 :
Октябрь 18, 2009, 19:05 »
SABROG да именно так.
А не можешь подсказать какие плюсы и минусы у кахдого из способов, или где можно почитать об этом?
Записан
BRE
Гость
Re: Стек или потоки?!
«
Ответ #3 :
Октябрь 18, 2009, 19:10 »
Цитата: Xeon от Октябрь 18, 2009, 19:05
А не можешь подсказать какие плюсы и минусы у кахдого из способов, или где можно почитать об этом?
http://www.opennet.ru/base/dev/server_way.txt.html
Записан
Xeon
Гость
Re: Стек или потоки?!
«
Ответ #4 :
Октябрь 18, 2009, 19:39 »
BRE Спасибо!
Может кто посоветует хорошую книжку по написанию сетевых приложений?!
Записан
BRE
Гость
Re: Стек или потоки?!
«
Ответ #5 :
Октябрь 18, 2009, 19:52 »
Цитата: Xeon от Октябрь 18, 2009, 19:39
Может кто посоветует хорошую книжку по написанию сетевых приложений?!
Классика:
У. Р. Стивенс, Б. Феннер, Э. М. Рудофф
UNIX. Разработка сетевых приложений
Записан
Xeon
Гость
Re: Стек или потоки?!
«
Ответ #6 :
Октябрь 18, 2009, 19:56 »
BRE, а под Windows чтонить посоветуешь?
Записан
BRE
Гость
Re: Стек или потоки?!
«
Ответ #7 :
Октябрь 18, 2009, 19:58 »
Цитата: Xeon от Октябрь 18, 2009, 19:56
BRE, а под Windows чтонить посоветуешь?
Нет.
Записан
Xeon
Гость
Re: Стек или потоки?!
«
Ответ #8 :
Октябрь 18, 2009, 20:00 »
BRE, жаль
А какой из способов написания сервера тебе больше по душе?
Записан
BRE
Гость
Re: Стек или потоки?!
«
Ответ #9 :
Октябрь 18, 2009, 20:02 »
Цитата: Xeon от Октябрь 18, 2009, 20:00
А какой из способов написания сервера тебе больше по душе?
А какое количество клиентов планируется обслуживать одновременно?
Записан
Xeon
Гость
Re: Стек или потоки?!
«
Ответ #10 :
Октябрь 18, 2009, 20:21 »
Планируется больше 1000, а то и 2000.
Записан
Rcus
Гость
Re: Стек или потоки?!
«
Ответ #11 :
Октябрь 18, 2009, 20:28 »
А почему бы не использовать Boost::Asio? Она внутри использует нативные средства (kqueue|/dev/poll|epoll|whatever). Имеет удобный API для асинхронного чтения/записи. И масштабируется без особых проблем при помощи пула потоков.
Записан
BRE
Гость
Re: Стек или потоки?!
«
Ответ #12 :
Октябрь 18, 2009, 20:30 »
Цитата: Xeon от Октябрь 18, 2009, 20:21
Планируется больше 1000, а то и 2000.
Ну это уже не мало. Не решусь, что то советовать, тебе самому перед началом разработкой необходимо хорошо представлять что ты делаешь.
Вот глянь еще статьи:
http://www.kegel.com/c10k.html
(!!!)
http://greenmice.info/ru/node/115
(здесь интересна первая теоретическая часть)
http://sysoev.ru/nginx/
(сайт Игоря Сысоева автора nginx )
+ посмотри еще в нете
Записан
BRE
Гость
Re: Стек или потоки?!
«
Ответ #13 :
Октябрь 18, 2009, 20:31 »
Цитата: Rcus от Октябрь 18, 2009, 20:28
А почему бы не использовать Boost::Asio? Она внутри использует нативные средства (kqueue|/dev/poll|epoll|whatever). Имеет удобный API для асинхронного чтения/записи. И масштабируется без особых проблем при помощи пула потоков.
+ еще бы посоветовал посмотреть на библиотеку ACE.
Записан
Xeon
Гость
Re: Стек или потоки?!
«
Ответ #14 :
Октябрь 18, 2009, 20:32 »
Rcus, а можно поподробней или ссылочку где почитать?
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...