Название: Стек или потоки?! Отправлено: Xeon от Октября 18, 2009, 17:48 Здравствуйте!
Мне интересен такой вопрос: как лучше организовать серверное приложение (С++), у которого, возможно, много клиентов, с помощью стека или потоков? Т.е. как организовать соединения? Название: Re: Стек или потоки?! Отправлено: SABROG от Октября 18, 2009, 18:53 Под стеком подразумевается бесконечный цикл в одном потоке, который обрабатывает все соединения?
Я бы наверно вынес в отдельные потоки. В зависимости от мощности системы ограничил бы количество потоков скажем до 50 и разделил количество клиентов на количество потоков. Можно например повесить на один поток 50 клиентов, при подключении нового клиента создается еще один поток и новые клиенты добавляются уже в него. Возможно как-то перемещал бы клиентов между потоками, чтобы можно было освободить ресурсы. Типа дефрагментация. Название: Re: Стек или потоки?! Отправлено: Xeon от Октября 18, 2009, 19:05 SABROG да именно так. :)
А не можешь подсказать какие плюсы и минусы у кахдого из способов, или где можно почитать об этом? Название: Re: Стек или потоки?! Отправлено: BRE от Октября 18, 2009, 19:10 А не можешь подсказать какие плюсы и минусы у кахдого из способов, или где можно почитать об этом? http://www.opennet.ru/base/dev/server_way.txt.htmlНазвание: Re: Стек или потоки?! Отправлено: Xeon от Октября 18, 2009, 19:39 BRE Спасибо!
Может кто посоветует хорошую книжку по написанию сетевых приложений?! :) Название: Re: Стек или потоки?! Отправлено: BRE от Октября 18, 2009, 19:52 Может кто посоветует хорошую книжку по написанию сетевых приложений?! :) Классика:У. Р. Стивенс, Б. Феннер, Э. М. Рудофф UNIX. Разработка сетевых приложений Название: Re: Стек или потоки?! Отправлено: Xeon от Октября 18, 2009, 19:56 BRE, а под Windows чтонить посоветуешь? :)
Название: Re: Стек или потоки?! Отправлено: BRE от Октября 18, 2009, 19:58 BRE, а под Windows чтонить посоветуешь? :) Нет. ;) ;DНазвание: Re: Стек или потоки?! Отправлено: Xeon от Октября 18, 2009, 20:00 BRE, жаль :)
А какой из способов написания сервера тебе больше по душе? Название: Re: Стек или потоки?! Отправлено: BRE от Октября 18, 2009, 20:02 А какой из способов написания сервера тебе больше по душе? А какое количество клиентов планируется обслуживать одновременно?Название: Re: Стек или потоки?! Отправлено: Xeon от Октября 18, 2009, 20:21 Планируется больше 1000, а то и 2000.
Название: Re: Стек или потоки?! Отправлено: Rcus от Октября 18, 2009, 20:28 А почему бы не использовать Boost::Asio? Она внутри использует нативные средства (kqueue|/dev/poll|epoll|whatever). Имеет удобный API для асинхронного чтения/записи. И масштабируется без особых проблем при помощи пула потоков.
Название: Re: Стек или потоки?! Отправлено: BRE от Октября 18, 2009, 20:30 Планируется больше 1000, а то и 2000. Ну это уже не мало. Не решусь, что то советовать, тебе самому перед началом разработкой необходимо хорошо представлять что ты делаешь.Вот глянь еще статьи: http://www.kegel.com/c10k.html (!!!) http://greenmice.info/ru/node/115 (здесь интересна первая теоретическая часть) http://sysoev.ru/nginx/ (сайт Игоря Сысоева автора nginx ) + посмотри еще в нете Название: Re: Стек или потоки?! Отправлено: BRE от Октября 18, 2009, 20:31 А почему бы не использовать Boost::Asio? Она внутри использует нативные средства (kqueue|/dev/poll|epoll|whatever). Имеет удобный API для асинхронного чтения/записи. И масштабируется без особых проблем при помощи пула потоков. + еще бы посоветовал посмотреть на библиотеку ACE.Название: Re: Стек или потоки?! Отправлено: Xeon от Октября 18, 2009, 20:32 Rcus, а можно поподробней или ссылочку где почитать? :)
Название: Re: Стек или потоки?! Отправлено: BRE от Октября 18, 2009, 20:44 boost::asio http://www.boost.org/doc/libs/1_40_0/doc/html/boost_asio.html
ACE http://www.cs.wustl.edu/~schmidt/ACE.html Название: Re: Стек или потоки?! Отправлено: niXman от Октября 21, 2009, 17:16 BRE, а под Windows чтонить посоветуешь? :) А под виндавз пишут сервера? :D |