1. 把thread.h文件从抽象类改成实现类
-
include<functional>
- using ThreadCallback = std::function<void()>;
-
把要执行的内容从run()改成了private成员变量
- private:ThreadCallback _callback 回调的形式
-
使用bind() 函数绑定回调
- bind() 的使用方法参见
https://www.cnblogs.com/jialin0x7c9/p/12219239.html
auto newCallable = bind(callable, arg_list);
- callable 是回调对象
- arg_list 的类型是list的指针
- bind() 的使用方法参见
-
用栈的写法在写一次
TestThread.cc/test1()
2. 用C++封装POSIX互斥锁_条件变量
互斥锁 mutex 与 条件变量cond的关系
- 不负责对方生命周期-不是聚合/组合
- 不是A is B 的关系-(条件变量不是互斥锁)所以不是继承
- 关联has和依赖use都有可能,条件变量一定需要互斥锁
- 单向的关联关系
- 依赖关系也行 要通过传参的方式进行//todo 不是很理解
- 只要用条件变量就得用互斥锁,这种关联关系.所以通常还使用关联
- 封装类UML
3. 一些要注意的地方
pthread_mutex_init(&_mutex, NULL)
- 如果初始化成功 返回
0
- 如果初始化失败 返回一个错误
error
- 如果初始化成功 返回
<stdio.h.h>
才能使用perror() 还需要<errno.h>
- 成员函数最好是动词而不是名词
- makefile的修改
4. 文件代码
文件代码比较多,已打包上传,使用make即可生成执行文件
文件下载链接(开源):
(6kb)C++封装互斥锁_条件变量.rar