Комментарии 33
Все руки не доходят опробовать эту либу, самое главное что интересует, как работает сеть, хотябы тест простейшего сервера, к примеру примера утилитой ab.
А так сам использую boost.
А так сам использую boost.
+1
$ ab -n 10000 -c 1000 http://127.0.0.1:8001/hello
Document Path: /hello Document Length: 131 bytes Concurrency Level: 1000 Time taken for tests: 1.276 seconds Complete requests: 9040 Failed requests: 0 Write errors: 0 Total transferred: 2540240 bytes HTML transferred: 1184240 bytes Requests per second: 7086.35 [#/sec] (mean) Time per request: 141.116 [ms] (mean) Time per request: 0.141 [ms] (mean, across all concurrent requests) Transfer rate: 1944.59 [Kbytes/sec] received Connection Times (ms) min mean[±sd] median max Connect: 0 1 3.3 0 24 Processing: 0 3 35.3 0 1128 Waiting: 0 2 35.2 0 1128 Total: 0 4 35.6 0 1129
+3
ab не дает адекватных результатов, т.к. посылает одни и те же запросы, что быстро работает засчет кэширования. в таком случае и на VB можно написать сервер, который не дольше отработает эту серию.
0
дайте какую-нибудь тулзу или скрипт для посылки разных запросов. С удовольствием потестирую.
0
НЛО прилетело и опубликовало эту надпись здесь
Чисто субъективно: мне понравилось меншее нагромождение из шаблонов. И так как необходима была быстрая реализация слушающего сервера, то разбираться в boost и точнее, boost::asio не было времени. Попался бы пример реализации на boost, копал бы boost.
+4
Раз уж минусуете, то не поленитесь сделать доброе дело: объяснить свою оценку. А то весьма странно получается.
0
Does tntnet run under Windows? No. Tntnet do not run under windows. Until now nobody was willing to port tntnet to windows. But if you really want to have it, you can volunteer.
http://www.tntnet.org/faq.html
А в остальном на первый взгляд неплохая либа. Для линукс серверов может быть удобной.
0
Ну мне boost то нормально, но проблема в том, что другим программистам довольно сложно все это освоить, хочется что-то полегче.
0
>гораздо удобнее smart pointer (ну имхо конечно), чем тот же std::smart_ptr
А в чём именно?
А в чём именно?
0
мне нужно было внешнее управление ссылками на внутренний объект smart_ptr, которое бы работало в многопоточном режиме — реализация cxxtools::smartPtr для меня оказалось весьма удобно.
0
Да, похожее, но есть один момент, смотрите (исходник): строка 230
вот этот момент с ownershipPolicy — класс, который обеспечивает threadsafety счётчик ссылок на объект. Очень похожее с тем, на что вы дали ссылку в boost. Только реализация несколько иная.
В целом, это меня устраивает и тянуть boost реализацию в добавок нет необходимости. Я не говорю, что boost хуже или лучше, просто использую эту реализацию и её хватает.
template <typename objectType,
template <class> class ownershipPolicy = InternalRefCounted,
template <class> class destroyPolicy = DefaultDestroyPolicy>
class SmartPtr : public ownershipPolicy <objectType>,
public destroyPolicy <objectType> {
вот этот момент с ownershipPolicy — класс, который обеспечивает threadsafety счётчик ссылок на объект. Очень похожее с тем, на что вы дали ссылку в boost. Только реализация несколько иная.
В целом, это меня устраивает и тянуть boost реализацию в добавок нет необходимости. Я не говорю, что boost хуже или лучше, просто использую эту реализацию и её хватает.
+1
На мой взгляд, примеры несколько громоздки…
+1
НЛО прилетело и опубликовало эту надпись здесь
Я правильно понимаю, что ни о какой асинхронности, как в boost::asio тут речи не идёт?
Тогда зачем это нужно?
Тогда зачем это нужно?
0
Конкретнее, что вы имеете в виду? Запросы выполняются независимо один от другого в разных потоках.
0
на 1000 одновременных запросов cxxtools создаст 1000 потоков? Это не очень хорошо. Серверу лучше читать из сокетов асинхронно, а продолжительные команды отправлять на выполнение в пул потоков. Попробуйте всё таки разобраться с boost::asio, это будет не плохим бонусом к вашему резюме :)
+3
не совсем. В простой демке для cxxtools: на каждый запрос создаются Job привязанные к одному потоку. В демке сервера tntnet уже пул потоков с очередью, в которой ожидают сокеты пока освободится поток. Я для себя пишу отдельно пул потоков с очередью используя из библиотеки только её реализацию TcpSocket (мне нужно по-своему органиовать это под задачу). Boost::asio изучу конечно, не всё сразу.
0
Блокируется ли выполнение потока на время выполнения запроса?
0
Чуток не в тему, но для C есть хорошая библиотека mowgli. Конечно, это не то же самое по функциональности, но многие вещи делает проще и удобнее.
+1
Cxxtools вообще развивается? Судя по частоте выпуска новых версий(а последняя вышла почти полтора года назад) оставляет желать лучшего
0
Развивается, я списывался с разработчиками:
> Hi Tommi. I'm new user of yours framework and I'm much interested in this
> project. But at first I have some questions to you. 1) is this project
> still developing?
> 2) is any alive community present around?
> 3) are you interested in futher developments?
Hi,
just look at the svn log. There you can see, that cxxtools, tntnet and tntdb
are all alive. We use it in our day to day work also. We have a mailinglist
and a irc channel at freenode #tntnet. Feel free to ask if you have any
questions.
+4
Cпасибо за статью,
тоже искал что-то подобное, пришлось много написать самому.
для работы с сокетами использую libevent
для http использую libcurl
тоже искал что-то подобное, пришлось много написать самому.
для работы с сокетами использую libevent
для http использую libcurl
+2
Библиотека выглядит перспективной, но по объёму функционала пока сильно уступает тем же Boost и Qt. А это означает, что в определённый момент может понадобится тащить что-то из тех же Boost или Qt и устраивать смесь из нескольких фреймворков / библиотек. Что не очень хорошо.
Оффтоп: насколько я понял, автор собирается писать свой собственный HTTP-сервер. Если это не в учебных целях, то советую ещё раз хорошо обдумать, посмотреть/попробовать FastCGI, модули и плагины к open source web-серверам и только потом писать свой сервер. Проверено на собственном опыте. Не спорю, есть класс задач, где нужно изобретать велосипед и писать свой специализированный HTTP-сервер. Но он очень узок.
Оффтоп: насколько я понял, автор собирается писать свой собственный HTTP-сервер. Если это не в учебных целях, то советую ещё раз хорошо обдумать, посмотреть/попробовать FastCGI, модули и плагины к open source web-серверам и только потом писать свой сервер. Проверено на собственном опыте. Не спорю, есть класс задач, где нужно изобретать велосипед и писать свой специализированный HTTP-сервер. Но он очень узок.
0
> 1) была free, 2) умела работать с сокетами и можно быстро было поднять свой сервер, 3) нужна была оббёртка над потоками для плюсов
boost::asio
boost::asio
0
не спорю, есть такой инструмент, но boost::asio сложнее. Мне нужно было быстро что-то сделать.
0
там есть горка примеров. среди них же и http-сервер — www.boost.org/doc/libs/1_48_0/doc/html/boost_asio/examples.html штука чудесная. http server пример 3 с пулом потоков. все буквально в несколько строчек.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Шаблонная библиотека cxxtools