轻量级适合阅读的优秀 C++ 开源项目

CTPL

这是一个现代简易版的、高效的C++线程池库,代码行数500行左右。

代码示例:

复制代码
void first(int id) { std::cout << "hello from " << id << '\n'; } struct Second { void operator()(int id) const { std::cout << "hello from " << id << '\n'; } } second; void third(int id, const std::string & additional_param) {} int main () { ctpl::thread_pool p(2 /* two threads in the pool */); p.push(first); // function p.push(third, "additional_param"); p.push( [] (int id){ std::cout << "hello from " << id << '\n'; }); // lambda p.push(std::ref(second)); // functor, reference p.push(const_cast<const Second &>(second)); // functor, copy ctor p.push(std::move(second)); // functor, move ctor }

这是一个高效、模块化、跨平台的开源编译器框架,可以将你写的代码,如C/C++、Rust编译成机器代码。

如果你想学习LLVM,我推荐你看一下LLVM-TUTOR开源库,这可以用作与学习LLVM的项目,里面有非常多的示例可以学习和运行,搞懂了这些示例,相信你很快就可以熟悉和掌握LLVM编译机制。

Cereal

一个二进制的Json库,使用起来非常方便,大约4000行代码。

SQLITE ORM

轻量级的现代C++库,将ORM封装,大约3000行代码。

高级功能如下

代码示例:

Workflow

由搜狗公司开源的一款异步网络和并行计算的C++框架库,被用在搜狗公司后端服务器引擎平台,比如云输入法、搜索引擎服务、在线广告等业务。可满足于后端和嵌入式开发等需求。

主要实现功能如下:

异步客户端支持的协议包括http、mysql、redis、kafka等;

自定义构建Client/Server协议,实现自己的RPC系统;SRPC开源库就是在该基础上实现,支持的协议包括:brpc、srpc、thrift、trpc等;

实现异步任务流,支持串并联和复杂的DAG结构;

实现并行计算功能,所有的任务可存放在一个流中,同时也支持计算任务调度。

示例代码:

FMT

一个开源的formatting库,大约3000行代码。

代码示例:

args

一个开源的命令行解析库,大约800行代码。

LIBZIPPP

一个基于libzip和zlib库封装而成的跨平台库,大约2000行代码。

TinyWebServer

轻量级別的Web服务器,主要使用在Linux平台,想快速了解网络编程的小伙伴可以研究研究该框架。

SQLiteC++

基于C++封装的SQLite库,大约2500行代码。

示例代码:

Cista

一个简单的、开源的C++序列化和反序列化库,大约1500行代码。

示例代码:

相关推荐
yaoxin5211233 小时前
434. Java 日期时间 API - Period 基于日期的时间段
java·开发语言·python
凡人叶枫4 小时前
Effective C++ 条款30:透彻了解 inlining 的里里外外
linux·开发语言·c++·嵌入式开发·effective c++
noipp4 小时前
推荐题目:洛谷 P10907 [蓝桥杯 2024 国 B] 蚂蚁开会
c语言·c++·算法·编程·洛谷
学逆向的4 小时前
C++纯虚函数
开发语言·c++·网络安全
程序员二叉5 小时前
【JUC】ThreadLocal底层原理|内存泄漏|弱引用|跨线程传递方案
java·开发语言·面试·职场和发展·juc
程序员二叉5 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
凡人叶枫5 小时前
Effective C++ 条款22:将成员变量声明为 private
linux·开发语言·c++
Qt程序员5 小时前
掌握 Linux 内核调度:从原理到实现(进程篇)
java·开发语言
code bean5 小时前
【LangChain】检索器完全指南:从向量检索到生产级 RAG 架构
java·开发语言·微服务
LabVIEW开发6 小时前
LabVIEW + MATLAB 混合编程:爆炸场测试数据精准采集方案
开发语言·matlab·labview