免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8894 | 回复: 5
打印 上一主题 下一主题

[C++] Boost高性能网络编程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-02-04 13:14 |只看该作者 |倒序浏览
本帖最后由 athxysoft 于 2012-08-29 10:56 编辑

Boost高性能网络编程
一、课程目标

本次课程围绕高性能网络编程这一主题,从众多的Boost类库中挑选出Boost.Asio、Boost.Thread以及其它配套的实用库,作为主要学习的内容,通过本次课程的学习,学员将具备以下能力:

    掌握智能指针、高阶函数对象、对象序列化/反序列化等类库的使用;
    理解现代操作系统线程模型、并发以及同步机制;
    熟练使用Boost.Thread线程管理和同步机制接口开发并发应用;
    深刻理解现代操作系统中事件多路分离和分派机制如select、epoll等、了解异步I/O以及完成事件的分派;
    熟练使用Boost.Asio构建稳定、高效和灵活的网络应用。

四、课程大纲

本次课程由以下几个部分构成:
1、Boost.Serialization - 序列化

    基本类型和自定义类型的序列化;
    数组、指针和智能指针的序列化;
    STL容器、std::string的序列化;
    识别类的版本;
    XML格式的archive;
    二进制格式的archive。

2、Boost.Smart_Ptr - 智能指针

    回顾std::auto_ptr<>;
    无Copyable 语义的scoped_ptr<>;
    shared_ptr<>;
    weak_ptr<>;
    enable_shared_from_this<>;

3、Boost.Bind and Boost.Function- 函数对象相关

    什么是函数对象?
    回顾std::bind1st()、std::bind2nd()、std::mem_fun()、std::ptr_fun()等适配器;
    Boost bind();
    Boost Function;
    Boost ref()。

4、Boost.Signals2 - 实现回调机制

    Boost Signal2:线程安全的Signal-Slot机制 (Publishers → Signals/Subscribers → Slots),即Observer模式的实现;
    简单的回调;
    多个Slot回调;
    管理Connections;
    一些示例。

5、一些实用类库

    Boost.Property_Tree;
    Boost.Format;

6、Boost.Thread - 多线程

    线程与进程之区别;
    用户线程与内核线程;
    不同操作系统中的线程模型;
    线程管理:线程创建、中断、分离/连接等;
    同步机制:Mutex、Lock、Condition_variable、TSS等。

7、Boost.Asio - 网络编程

Boost.Asio库,通过对各类操作系统原生的socket API以及事件多路分离、异步I/O API的封装,构成了一个性能优秀、可移植性高、便于编程的网络编程框架,使复杂的网络编程任务变得简单、安全、并且高效。

    Asio相关概念:同步I/O和异步I/O、Proactor模式、Asio和线程;
    Linux 下 I/O事件多路分离机制:select、epoll;
    TCP同步I/O Server/Client编程示例;
    UDP同步I/O Server/Client编程示例;
    TCP异步I/O Server/Client编程示例;
    UDP异步I/O Server/Client编程示例;
    Timer - 定时器;
    Asio核心接口介绍。

8、高性能网络编程讨论

    考究高性能网络编程中应该遵循的原则,讨论并发、同步、事件多路分离等机制的适用场合。
    网络应用的瓶颈在何处?
    事件多路分离 vs 一连接一线程 (Event demultiplexing vs One thread per connection);
    同步I/O vs 异步I/O (Synchronous I/O vs Asynchronous I/O);
    如何适当地使用多线程?
    什么时候需要多个 事件多路分离线程?

9、应用层协议定义与实现

    为什么要自定义应用层协议?
    定义应用层协议 (以XMMEP协议为例);
    用C++实现自定义的协议 (以XMMEP协议为例)。

注:XMMEP为X-Messenger Message Exchanging Protocol。

六、课程资源

      可获取的课程资源见:教学资源。
http://www.xuanyuan-soft.cn/
QQ:570508473

论坛徽章:
1
射手座
日期:2014-08-04 16:49:43
2 [报告]
发表于 2012-02-04 15:07 |只看该作者
在C++中 用过一次boost  ....在类中使用boost  创建线程后, 不能使用成员函数....  不是很感冒 getid也不好使.... 无奈混插pthread_self()...
说实话用起来是挺简单的,,但是功能上还是太弱.. 可能是我太菜了吧.....

还是习惯<pthread.h>

论坛徽章:
0
3 [报告]
发表于 2012-02-04 21:40 |只看该作者
这个boost听起来很牛,不知道boost有没有GUI库和Web库?
目前GUI库和Web库很需要阿。在应用层缺不了这两方面。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:56:11
4 [报告]
发表于 2012-02-05 17:07 |只看该作者
asio似乎还行。

论坛徽章:
0
5 [报告]
发表于 2012-02-07 16:19 |只看该作者
一看到"boost高性能"我就忍不住笑了

论坛徽章:
0
6 [报告]
发表于 2012-02-10 10:56 |只看该作者
asio用好了还是不愧对高性能网络这一称号。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP