谁在商业上面上用过libevent asio 性能,性能怎么样

blog中的文章地址:
今天没事可干,就再写一篇吧啊哈哈哈
这个spawn是boost 1.54中的asio新增加的东西,我目前用的boost是1.56,如果不能用以下代码请更新boost....
其实有了之前介绍的和,这里也就没啥原理性的东西介绍了,asio到底怎么封装的我也没看明白,不过只要好用就行了。简单说一下几个类和函数的作用就可以了,剩下的太简单了,简直就跟回归了同步的网络编程一个样了。
还是直接上代码:
#include &boost/asio.hpp&
#include &boost/asio/spawn.hpp&
#include &memory&
#include &functional&
#include &iostream&
class session : public std::enable_shared_from_this & session &
explicit session(boost::asio::io_service& io_service)
: strand_(io_service), socket_(io_service)
boost::asio::ip::tcp::socket& socket()
return socket_;
boost::asio::spawn(strand_,
std::bind(&session::echo,
shared_from_this(), std::placeholders::_1));
void echo(boost::asio::yield_context yield)
char data[128];
std::size_t n = socket_.async_read_some(boost::asio::buffer(data), yield);
boost::asio::async_write(socket_, boost::asio::buffer(data, n), yield);
boost::asio::io_service::strand strand_;
boost::asio::ip::tcp::socket socket_;
void do_accept(boost::asio::io_service& io_service,
unsigned short port, boost::asio::yield_context yield)
boost::asio::ip::tcp::acceptor acceptor(
io_service,
boost::asio::ip::tcp::endpoint(
boost::asio::ip::tcp::v4(), port));
boost::system::error_
std::shared_ptr&session& new_session(std::make_shared&session&(io_service));
acceptor.async_accept(new_session-&socket(), yield[ec]);
new_session-&go();
int main(int argc, char* argv[])
boost::asio::io_service io_
boost::asio::spawn(io_service,
std::bind(do_accept,
std::ref(io_service), 8888, std::placeholders::_1));
io_service.run();
catch (std::exception& e)
std::cerr && &Exception: & && e.what() && &\n&;
把asio的example\cpp03\spawn中的例子稍微修改了下。简单解释下,boost::asio::spawn就是开启了一个stackfull的coroutine,这个函数需要一个回调函数(比如说do_accept),然后会传一个boost::asio::yield_context给这个函数,只要用这个yield_context作为handle来调用asio的异步函数,就可以把这些函数编程“同步”的。不过这个“同步”是加引号的,虽然这个名叫异步,但是是同步的操作在没有完成之前是不会返回的,但是在内部会继续执行其他的异步操作,并不会真的阻塞。于是我们现在就同时有了一部和同步的优势,既不会因为同步丧失性能,也不会像原来的异步那样一个接一个的回调,写的都要吐了。boost::asio::io_service::strand我理解的就是总是把io_service传来传去不方便,是用来代替io_service给spawn开coroutine的。
回想一下之前用asio异步要循环干某件事的一般做法,至少需要单独定义两个函数,一个用来发起异步操作,比如说调用boost::asio::async_read,第二个函数用来做事件完成的handle,然后在handle中再次调用发起异步操作的那个函数,这样就构成了一个循环。但是现在我们只需要用c++本身的循环语句即可搞定,就像上面的do_accept。
另外就是1.当一个异步读取/写入函数用了yield当handler,它的返回值一般是读取或者写入的字节数;2.yield重载了[],可以接受一个boost::system::error_code作参数,返回出错信息的。如果不传入这个error_code,函数会把他当异常抛出来,这些可以很明显的从示例代码中看出来。
本文目前还没有评论……&>&&>&&>&&>&一个boost asio简单的性能测试代码
一个boost asio简单的性能测试代码
上传大小:917B
boost asio性能测试和研究的例子
asio异步处理方式cpu消耗较高,同样的处理,确比同步方式还要高出一倍的cpu利用率,还能不能用啊
综合评分:3.5(6位用户评分)
所需积分:0
下载次数:50
审核通过送C币
创建者:caozhy
创建者:hujiasuta
创建者:redleafe
课程推荐相关知识库
上传者其他资源上传者专辑
开发技术热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
一个boost asio简单的性能测试代码
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
dobotoduan
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:nous_server 一个采用BOOST ASIO库写成的开源的网络框架,具有较高的性能,附带了 此 编写的 WinSock-NDIS 编程 238万源代码下载-
&文件名称: nous_server
& & & & &&]
&&所属分类:
&&开发工具: Visual C++
&&文件大小: 24262 KB
&&上传时间:
&&下载次数: 396
&&提 供 者:
&详细说明:一个采用BOOST ASIO库写成的开源的网络框架,具有较高的性能,附带了采用此框架编写的DEMOD-A BOOST ASIO library using open-source web framework written in, high performance, with the use of this framework for the preparation of the DEMOD
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&program\chat_master\chat_master\chat_master\chat_master.h&&.......\...........\...........\...........\chat_sr.h&&.......\...........\...........\...........\cm.h&&.......\...........\...........\...........\cm_config.h&&.......\...........\...........\...........\cs_account.h&&.......\...........\...........\...........\gws_account.h&&.......\...........\...........\...........\gw_sr.h&&.......\...........\...........\chat_master&&.......\...........\...........\chat_master.vcproj&&.......\...........\...........\chat_master.vcproj.MICROSOF-D9E638.Administrator.user&&.......\...........\...........\chat_master.vcproj.UI-NOUS.Nous.user&&.......\...........\...........\cm.conf&&.......\...........\...........\cm_db.conf&&.......\...........\...........\main\chat_master.cpp&&.......\...........\...........\....\win_main.cpp&&.......\...........\...........\main&&.......\...........\...........\ReadMe.txt&&.......\...........\...........\sr_db.conf&&.......\...........\...........\stdafx.cpp&&.......\...........\...........\stdafx.h&&.......\...........\chat_master&&.......\...........\chat_master.sln&&.......\...........\chat_master.suo&&.......\...........\obj\chat_master\Debug\BuildLog.htm&&.......\...........\...\...........\Debug&&.......\...........\...\chat_master&&.......\...........\obj&&.......\chat_master&&.......\gateway_server\gateway_server\gateway_server\chat_sr.h&&.......\..............\..............\..............\cs2gwcl_worker.h&&.......\..............\..............\..............\gateway_server.h&&.......\..............\..............\..............\gw.h&&.......\..............\..............\..............\gw_client.h&&.......\..............\..............\..............\gw_config.h&&.......\..............\..............\..............\lo_sr.h&&.......\..............\..............\gateway_server&&.......\..............\..............\gateway_server.vcproj&&.......\..............\..............\gateway_server.vcproj.MICROSOF-D9E638.Administrator.user&&.......\..............\..............\gateway_server.vcproj.UI-NOUS.Nous.user&&.......\..............\..............\gw.conf&&.......\..............\..............\gw_db.conf&&.......\..............\..............\main\gateway_server.cpp&&.......\..............\..............\....\win_main.cpp&&.......\..............\..............\main&&.......\..............\..............\ReadMe.txt&&.......\..............\..............\sr_db.conf&&.......\..............\..............\stdafx.cpp&&.......\..............\..............\stdafx.h&&.......\..............\gateway_server&&.......\..............\gateway_server.sln&&.......\..............\gateway_server.suo&&.......\..............\obj\gateway_server\Debug\BuildLog.htm&&.......\..............\...\..............\Debug&&.......\..............\...\gateway_server&&.......\..............\obj&&.......\gateway_server&&.......\hl_client\hl_client\chat_client\chat_client.cpp&&.......\.........\.........\...........\chat_client.h&&.......\.........\.........\chat_client&&.......\.........\.........\config.txt&&.......\.........\.........\hl_client.cpp&&.......\.........\.........\hl_client.idc&&.......\.........\.........\hl_client.vcproj&&.......\.........\.........\hl_client.vcproj.MICROSOF-D9E638.Administrator.user&&.......\.........\.........\hl_client.vcproj.UI-NOUS.Nous.user&&.......\.........\.........\ReadMe.txt&&.......\.........\.........\stdafx.cpp&&.......\.........\.........\stdafx.h&&.......\.........\hl_client&&.......\.........\hl_client.sln&&.......\.........\hl_client.suo&&.......\.........\obj\hl_client\Debug\BuildLog.htm&&.......\.........\...\.........\Debug&&.......\.........\...\.........\Release\BuildLog.htm&&.......\.........\...\.........\Release&&.......\.........\...\hl_client&&.......\.........\obj&&.......\hl_client&&.......\...sdk\bin\clean.bat&&.......\......\...\cm.conf&&.......\......\...\cm_db.conf&&.......\......\...\config.txt&&.......\......\...\copy_conf.bat&&.......\......\...\crs.conf&&.......\......\...\cs.conf&&.......\......\...\cs_db.conf&&.......\......\...\gw.conf&&.......\......\...\gw_db.conf&&.......\......\...\irrKlang.dll&&.......\......\...\Irrlicht.dll&&.......\......\...\libcharset1.dll&&.......\......\...\libiconv2.dll&&.......\......\...\libmysql.dll&&.......\......\...\libmysql_d.dll&&.......\......\...\lo.conf&&.......\......\...\los_db.conf&&.......\......\...\lua5.1.dll&&.......\......\...\lua51.dll&&.......\......\...\msvcp80.dll&&.......\......\...\msvcp80d.dll
&[]:很好,推荐下载&[]:很好,推荐下载&[]:很好,推荐下载
&近期下载过的用户:
&相关搜索:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - MyNetEngine是本人为自己的mmorpg写的网络引擎,有服务端和客户端.服务端采用iocp.方便,小巧.对付一般几百连接通讯应该没问题.客户端采用阻塞socket模型.即能满足一般客户端的通讯需求.本服务端和客户端是配套使用的.内部封装了通讯协议.可保证数据包完整性.避免了tcp的沾包问题.
&[] - A http server with boost asio
&[] - boost asio的一个异步通信聊天室的客户端程序
&[] - 使用boost::ASIO开发的一个tcp/udp服务器、客户端的架构。
&[] - point to point client/server using boost::asio
&[] - boost asio的一个异步通信聊天室的服务器端程序
&[] - 基于boost开发的网络tcp服务器模型,效率很好。适合中小型公司开发服务器,跨平台。接口简单。只要写出适当的回调函数集合,记得要下载boost库哦
&[] - boost::asio库
服务器与客户端实现
&[] - 基于boost::asio的跨平台的转发服务器
&[] - 基于IOCP完成端口的可伸缩性服务器程序,利用线程池、连接池、内存池的技术管理和实现服务器,可在各种服务器开发项目中应用。

我要回帖

更多关于 asio 性能 的文章

 

随机推荐