重写muduo之Thread、EventLoopThread、EventLoopThreadPool

目录

1、概述

2、Thread

2.1 Thread.h

3、EventLoopThread

3.1 EventLoopThread.h

3.2  EventLoopThread.cc

4、 EventLoopThreadPool

4.1 EventLoopThreadPool.h

4.2 EventLoopThreadPool.cc


1、概述

管理事件循环线程的调度的

打包了一个EventLoop和线程,绑定了一个loop跟thread,让这个loop运行在这个thread上,在这个thread里面创建一个loop(one loop per thread)

底层封装的线程

2、Thread

2.1 Thread.h

#pragma once

#include "noncopyable.h"

#include <functional>
#include <thread>
#include <memory>
#include <string>
#include <atomic>

class Thread:noncopyable
{
public:
    using ThreadFunc=std::function<void()>;//线程函数的函数类型  绑定器和函数对象,就可以传参 

    explicit Thread(ThreadFunc,const std::string& name=std::string());//构造函数
    ~Thread();

    void start();//启动当前线程 
    void join();//当前线程等待其他线程完了再运行下去 

    bool started()const {return started_;}
    pid_t tid()const{return tid_;}
    const std::string& name()const{return name_;}

    static int numCreated(){return numCreated_;}
private:
    void setDefaultName();//给线程设置默认的名称
    bool started_;//启动当前线程 
    bool joined_;//当前线程等待其他线程完了再运行下去 
    std::shared_ptr<std::thread> thread_;//自己来掌控线程对象产生的时机
    pid_t tid_;
    ThreadFunc func_;//存储线程函数 
    std::string name_;//调试的时候打印 
    static std::atomic_int numCreated_;//对线程数量计数 
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值