发布一个我自己业余时间编写的 C++ 多线程库 for Linux,这个库只有不到 1000 行源代码,封装了 pthreads 的常用功能(互斥器、条件变量、线程),实现了简单的线程池,并仿照 java concurrent 包编写了 BlockingQueue 和 CountDownLatch。库里的每个 class 都提供了使用样例。

这个库的内容:

  • 整数的原子操作, AtomicInt32 和 AtomicInt64
  • 线程,Thread
  • 线程池,ThreadPool
  • 互斥器与条件变量, MutexLock,MutexLockGuard 与 Condition
  • 带调用栈信息 (stack trace) 的异常基类,Exception
  • 仿 Java concurrent 的 BlockingQueue 和 CountDownLatch
  • Singleton 与 ThreadLocal

注:我故意没有提供信号量 Semaphore 的封装。将来或许会增加读写锁的封装,如果我在博客中用到的话。

Thread 和 ThreadPool 的接口设计采用了《以 boost::function 和 boost:bind 取代虚函数》里提倡的风格,没有使用继承和基类。

注意,CurrentThread 有一个 thread local 变量 t_threadName,其作用是在调试和分析 core dump 时打印线程的名称,例如:

(gdb) p 'muduo::CurrentThread::t_threadName' 
$4 = 0x4057fe "ThreadPool2"

MutexLock,MutexLockGuard 与 Condition 的使用请参考《多线程服务器的常用编程模型》。

CountDownLatch 的使用样例见 test/BlockingQueue_test.cc

git 下载地址: http://github.com/chenshuo/recipes

浏览源代码: http://github.com/chenshuo/recipes/tree/master/thread/

这个库在 Debian Squeeze 和 Ubuntu 10.04 LTS 下编译测试通过,适用于 x86 和 x86-64 平台。

本文转自 陈硕  博客园博客,原文链接:http://www.cnblogs.com/Solstice/archive/2010/08/21/muduo_thread_lib.html,如需转载请自行联系原作者

发布一个 Linux 下的 C++ 多线程库相关推荐

  1. 一个Linux下的 俄罗斯方块游戏,基于 ncurse 库。。

    2019独角兽企业重金招聘Python工程师标准>>> 几天前写得一个Linux下的 Tetris 游戏,基于 ncurses  库.. 望大家多多指教,功力太浅,多提代码的改进意见 ...

  2. linux下最简单多线程单文件socks5代理proxy服务器程序(仅一个c文件,带详细注解)

    2020.9.11 网上看的都比较复杂,GITHUB找了一个多线程的相对简单的MicroSocks项目,花了几周时间(没办法,菜鸟一个)改了一下,改成单文件,测试OK. /* wxl_socks5_p ...

  3. linux动态库路径生效,Linux下如何解决动态库的链接问题

    原标题:Linux下如何解决动态库的链接问题 静态库是一种以空间换取时间和移植性的做法,一些情况下确实有着一定的意义,但是一些情况下,我们自己编写的简单项目,在绝大多数的机器上不存在移植性问题,是没有 ...

  4. Linux下的静态链接库和动态链接库编程

    Linux下的静态链接库和动态链接库编程 参考: Linux下的静态链接库和动态链接库编程 - Histring - 博客园 Mac下静态库和动态库的创建和使用_C/C++_vincent2610的专 ...

  5. linux里c库和gnu c库,Linux下的C的库文件和头文件有什么区别-

    Linux下的C的库文件和头文件有什么区别- (2012-04-10 01:16:57) 标签: linux 杂谈 Linux下的C的库文件和头文件有什么区别?刚刚接触 这里有点没搞清楚 如果按我的理 ...

  6. linux如何编译boost指定库,linux下编译安装boost库

    linux下编译安装boost库 先看一下系统环境 Linux o-pc 3.19.0-22-generic #22-Ubuntu SMP Tue Jun 16 17:15:15 UTC 2015 x ...

  7. Linux下安装自定义字体库

    Linux下安装自定义字体库 第一步.在Windos环境下找到字体库 如:C:\Windows\Fonts 第二步.找到Linux下字体库 如:/usr/share/fonts/chinese 第三步 ...

  8. Linux下ibus输入法词库扩展

    文章目录 一.骡子 二.直接上教程 三.目前支持的词汇(如果你找到了比较全的词库,希望能够得到你的分享) 四.补充:自己添加词库 Linux下ibus输入法词库扩展 一.骡子 面向百度编程已经给出了很 ...

  9. Linux下的静态链接库和动态链接库

    Linux下的静态链接库和动态链接库 零.链接库概述 Linux下得库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀.面对比一下两者: 静态链接库:当要使用时,连接器会找出程序所需的函数, ...

最新文章

  1. 人工智能实践:TensorFlow笔记学习(三)——TensorFlow框架
  2. 处理文件和文件夹的模块---os
  3. Phoenix二级索引(Secondary Indexing)的使用(转:https://www.cnblogs.com/MOBIN/p/5467284.html)
  4. c#操作Xml(八)
  5. ES6新增数据类型符号(2):共享符号与知名符号
  6. 抖音只能上下滑动吗_抖音:如何靠评论,轻松涨粉十万
  7. flask 检测post是否为空_使用Flask搭建一个校园论坛-4
  8. docker构建oracle集群,docker 构建 oracle数据库 镜像-Go语言中文社区
  9. JS高级——内存管理和闭包
  10. 电商:购物车模块解决思路
  11. 30 分钟带你学透快应用界面开发的最正确姿势
  12. python列表添加对象_python list append命令 添加对象
  13. SpringData-JPA
  14. 使用AsyncDisplayKit提升UICollectionView和UITableView的滚动性能
  15. html用锚点回到顶部代码,纯css实现回到顶部-jq回到顶部方法
  16. Mac电脑没声音了怎么办?
  17. 飞猪 Serverless 体系从无到有,落地10余个业务场景
  18. python写excel,请大表哥喝杯茶
  19. 7-1 电话聊天狂人 (25 分)
  20. RTX2012概述-1

热门文章

  1. 1225 数数字
  2. poj3461kmp
  3. 【Java TCP/IP Socket】 — close()/shutdownOutput()/shutdownInput() 分析
  4. web前端都是自学成才吗?入行前端工程师的3种方式
  5. 为什么前端工程师薪资越来越高?
  6. c语言红警源代码,真香!红警游戏源代码开源了,70,80,90最好的游戏
  7. 如何修改influxdb表结构_influxdb基本操作
  8. QT关于Excel的操作
  9. 火狐浏览器百度网盘服务器响应,火狐浏览器打不开百度网盘怎么解决?解决百度网盘打不开的步骤分享...
  10. 泛型 java 总结_JAVA泛型总结