zoukankan      html  css  js  c++  java
  • Boost高性能网络编程

    Boost高性能网络编程

    Boost高性能网络编程

    一、课程目标

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

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

    二、参训要求

    参加本次课程的学员须具备以下能力:

    • 熟练掌握C++语法,理解C++面向对象和泛型(模板)机制;
    • 了解TCP/IP协议,有网络编程概念。

    三、课程实践环境

    • 学员自备电脑
    • 实践平台 (以下二者之一):
      • Win32 / Visual Studio 2008 (或更新)
      • Linux 2.6.18+ x86-32 / GCC 4.1.2+ / Eclipse CDT 、vi
    • Boost 1.47.0+

    注:在上课之前,学员须搭建好上述开发实践环境,如有困难,可以在开课前通过E-Mail或MSN、QQ等方式与讲师沟通。

    四、课程大纲

    本次课程由以下几个部分构成:


    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。

    五、时间安排

    课程时间:3天,以每天6小时计,具体安排如下:

    • Day1
      • 1 - Boost.Serialization - 序列化
      • 2 - Boost.Smart_Ptr - 智能指针
      • 3 - Boost.Bind and Boost.Function- 函数对象相关
      • 4 - Boost.Signals2 - 实现回调机制
      • 5 - 一些实用类库
    • Day2
      • 6 - Boost.Thread - 多线程
      • 7 - Boost.Asio - 网络编程1
    • Day3
      • 7 - Boost.Asio - 网络编程2
      • 8 - 高性能网络编程讨论
      • 9 - 应用层协议定义与实现
      • 课程回顾与总结

    六、课程资源

          可获取的课程资源见:教学资源

  • 相关阅读:
    ubuntu docker 安装
    后缀数组小结
    后缀数组小结
    后缀数组小结
    win7下如何建立ftp服务器
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/lexus/p/2565889.html
Copyright © 2011-2022 走看看