重写muduo之Acceptor模块

目录

1、回顾 

2、Acceptor

2.1 Socket

2.1.1 Socket.h

2.1.2 Socket.cc

2.2 Acceptor

2.2.1 Acceptor.h

 2.2.2 Acceptor.cc


1、回顾 

Channel、Poller、EPollPoller、EventLoop相当于Reactor模型中的Reactor反应堆和Demultiplex事件分发器

Thread、EventLoopThread、EventLoopThreadPool:如果只有baseloop的话,这个线程既要负责处理连接请求,还要处理读写事件,效率低,所以muduo库是采用Mutiple Reactors,可以通过setthreadnum设置底层线程的数量(设置的是subloop工作线程的数量)。

以上部分已完成。

2、Acceptor

现在我们看Acceptor
Acceptor就是处理accept,监听新用户的连接,拿到跟客户端通信的clientfd,打包成channel,根据muduo的轮询算法找一个subloop,把subloop唤醒(每一个loop都有一个由系统API eventfd创建的wakeupfd(带有线程间通知notify机制的fd),在subloop的poller中监听的,mainloop通过给wakeupfd写一个整数去唤醒subloop),把接收的channel给subloop。

我们打开TCPServer,处理一下Acceptor,

Acceptor运行在我们的baseloop(mainreactor)里面
​​​​​

2.1 Socket封装fd

Acceptor对socket类进行了封装,先来看一下socket

2.1.1 Socket.h

#pragma once
#include "noncopyable.h"

class InetAddress;

//封装socket fd
class Socket:noncopyable
{
public:
    explicit Socket(int sockfd)
        :sockfd_(sockfd)
    {}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值