11-muduo-base-Thread
classDiagram
class Thread~T~
Thread : +bool started_
Thread : +bool joined_
Thread : +bool started
Thread : +pthread_t pthreadId_
Thread : +pid_t tid_
Thread : +ThreadFunc func_
Thread : +string name
Thread : CounDownLatch latch_
Thread : AtomicInt32 numCreated_
Thread : <<create>>-Thread(ThreadFunc, string)
Thread : <<destroy>>-~Thread()
Thread : +start() void
Thread : +join() void
Thread : +started() bool
Thread : +tid() pid_t
Thread : +name() string
Thread : +numCreated() int
Thread : +setDefaultName() void
1 类说明
1 功能
这是muduo的线程类,主要时封装pthread_XXXX的系列函数。对标std::thread标准库的线程类
2 继承
继承noncopyable
2 成员变量说明
1 non-static
- started_
- 线程运行标记
- joined_
- 线程join标记
- pthreadId_
- pthread_t类型变量
- tid_
- 线程的tid
- func_
- 线程函数
- name_
- 线程名称
- latch_
- 倒计门阀,用于线程同步。这里主要用于同步tid的获取
2 static
- numCreated_
- 如名,已线程创建数量
3 成员函数说明
- 构造函数
- 初始化所有的成员变量
- 析构函数
- 对于已经start但还没join的线程进行detach
- start
- 启动线程
- join
- 封装pthread_join
- started
- 返回线程是否开始运行
- tid
- 返回tid
- name
- 返回线程名称
- numCreated
- 返回已创建线程数
- setDefaultName
- 设置默认的线程名称
Thread:numCreated
- 设置默认的线程名称
4 detail namespace
1 函数
- gettid
- 通过
syscall(SYS_gettid)返回tid
- 通过
- afterFork
- 在fork后调用,初始化主线程信息:tid、name
- startThread
- 将参数转为ThreadData类型指针,再调用其runInThread,然后delete
2 类
ThreadNameInitializer
- 主要就是创建主线程信息,调用afterFork,初始化t_cachedTid等信息
- pthread_atfork(void(prepare)(void),void(parent)(void),void(*child)(void)),在子进程创建前父进程调用prepare,子进程创建后父进程调用parent,子进程调用child
(221条消息) linux线程函数 pthread_atfork 的深入理解_大飞飞鱼的博客-CSDN博客_pthread_atfork
ThreadData
如名,这个类主要包含线程的数据
- 成员变量
- func_:线程函数
- name_:线程名字
- tid_:tid
- latch_:倒计门阀
- 成员函数
- 构造函数:初始化成员变量
- runInThread
- 将倒计门阀的值减一,作用就是等所有线程准备好后,latch_内的 count _ 变量变为0,就通知所有线程可以执行了,默认为1的话,相当于不用等其他线程
- 然后调用func_线程函数
- 根据catch清空来对
muduo::CurrentThread::t_threadName赋值,并生成异常信息

浙公网安备 33010602011771号