20200201_ 用C++封装POSIX互斥锁_条件变量

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的指针
  • 用栈的写法在写一次 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值