熟练使用C/C++语言编程,熟悉指针应用及内存管理、继承封装多态、STL常用容器
及其扩容原理等,掌握智能指针、右值引用等C++11新特性;
熟悉链表、栈、队列、哈希表等常见的数据结构与算法;
熟悉TCP/IP、UDP、HTPP等常见协议,掌握TCP soctet交互的基本流程和OSI七层模
型;
熟悉select和epoll等网络编程模型,掌握多线程、socket编程等;
熟悉进程管理、内存管理等操作系统基本原理,掌握Linux基本命令;
会使用关系型数据库MySQL;
掌握常用设计模式(单例模式、工厂模式、适配器模式等);
了解Nginx服务器反向代理的原理,了解fastDFS和Redis集群等分布式文件系统的原
理。
项目描述:在高并发网络服务器中,线程创建与销毁都是极其耗时耗能的操作,线程
池在服务器启动之处就事先创建好线程,当业务流量到来时按需分配。业务执行完
后,无需释放线程,直接将其归还到线程池即可,然而C++11之前写的线程池都不支
持各种变参数任务,缺乏灵活性,所以使用C++11写 了可变参数模板的线程池。
主要工作:
(1)基于可变参模板编程,实现submitTask接口,解决了任意任务和任意 参数传递的
问题;
(2)使用future、decltype等解决了实现异步返回值的问题;
(3)使用packaged_task来封装函数和任务,解决异步执行任务的问题;
(4)使用condition_variable和互斥锁mutex实现线程之间的通信;
(5)使用forward来完美转发技术,解决了传递参数的时候会出现右值变左值的问题;
(6)使用匿名函数实现回调,使工作线程执行封装后的任务;
(7)使用原子变量来记录正在运行的任务,避免任务队列为空然后退出线程池,造成
线程池不安全的问题。