后台开发
月无影
IT爱好者-软件工程师
展开
-
小白一步一步学并发编程(1)—— tcp单发服务
最简单的tcp服务,一次只能处理一个请求,请求处理完就直接关闭连接。这里只为了展示并发编程的逻辑,所以业务逻辑处理比较简单,就是接收客户端请求,打印客户端发送的信息。tcp_server.h头文件#ifndef TCP_SERVER_H_#define TCP_SERVER_H_#include <iostream>#include <stdio.h>#...原创 2018-11-25 22:31:09 · 240 阅读 · 0 评论 -
小白一步一步学并发编程(2)—— tcp多进程并发
tcp并发服务,对于初学者来说,很容易想到多进程的并发,虽然很少有服务只是用多进程来处理并发,而且往往并不实际,因为多进程会占用很多系统资源。但现在很多服务,为了进一步提升并发,或者处理并行计算,一般考虑分布式,多进程多机器处理请求和计算。多进程并发头文件tcp_server_process.h#include <iostream>#include <stdio.h&...原创 2018-11-25 23:17:11 · 203 阅读 · 0 评论 -
小白一步一步学并发编程(3)—— tcp I/O epoll 并发
接前面教程,日志类和tcp_server基类见(1)。常见的IO并发-select、poll、epoll,当然,最常用的是epoll,因为其采用底层事件回调函数机制,将就绪状态IO加入到就绪链表,提高了并发性能。epoll接口使用主要是三步:epoll_create,epoll_ctl,epoll_wait。epoll-IO并发服务tcp_server_epoll.h#include...原创 2018-11-26 22:48:36 · 290 阅读 · 0 评论 -
小白一步一步学并发编程(4)—— tcp多线程并发
多线程并发的逻辑和多进程类似,这里只不过是将线程代替了进程,多线程的好处是共享进程的内存空间,节省资源。这里主线程处理连接请求,通过新建线程来处理连接建立后的数据交互和处理。tcp_server_thread.h#include <iostream>#include <stdio.h>#include <string.h>#include <...原创 2018-11-26 23:05:20 · 284 阅读 · 0 评论 -
小白一步一步学并发编程(5)—— libevent IO并发
libevent是很常用的IO并发库,底层封装了select,poll和epoll方法来进行I/O复用,提供了简单易用的接口。libevent在实现上使用了事件驱动这种机制,其本质上是一种Reactor模式。Reactor模式,是一种事件驱动机制。应用程序需要提供相应的接口并注册到Reactor上,如果相应的事件发生,Reactor将主动调用应用程序注册的接口,这些接口又称为“回调函数”。li...原创 2018-12-01 16:37:48 · 409 阅读 · 0 评论 -
小白一步一步学并发编程(6)—— libevent IO加简单多线程池并发
libeventIO是单线程的,将所有监控的IO句柄加入到队列里面,只要对于的IO发生事件,就会触发对应的回调函数。对于一个程序既要监控所有IO句柄,又要处理所有IO事件,必然会影响效率。利用一个主线程监控监听套接字是否有事件发生,创建部分子线程监控已连接的套接字是否有事件发生,并进行处理;主线程监听到套接字后,随机选一个子线程来处理后面的请求。由于libevent回调函数必须是静态函数成员,...原创 2018-12-01 17:16:48 · 705 阅读 · 0 评论