
cpp-tbox
文章平均质量分 93
cpp-tbox源码走读和使用分享
码农练功房
嵌入式开发,C++后端开发,通信协议软件开发
展开
-
Linux应用框架cpp-tbox之弱定义
学过C/C++的都知道,main函数是程序的入口点,是程序开始执行的地方。每个可执行的C或C++程序必须包含一个main函数。但是参照官方提供的demo,我们会发现:demo没有定义main函数,编译竟然没有报错,而且生成的可执行文件还能运行!在C和C++编程中,attribute((weak))是一个编译器特性(attribute),主要用于告诉编译器或链接器对待特定的函数或全局变量为“弱定义”(weak definition)。原创 2024-10-10 10:45:43 · 501 阅读 · 0 评论 -
Linux应用框架cpp-tbox之日志系统设计
1) 有三种日志输出渠道:stdout + filelog + syslogstdout,将日志通过std::cout输出到终端;syslog,将日志通过syslog()输出到系统日志;前缀.年月日_时分秒.进程号.log的文件中。文件大小超过1M则另创建新的日志文件。由于写文件效率低,该输出渠道采用前后端模式。三种渠道可以在启动参数中选定一个或同时多种,也可在运行时通过终端更改。2) 根据日志等级渲染不同颜色,一目了然,内容详尽。原创 2024-10-10 11:10:16 · 1304 阅读 · 0 评论 -
Linux应用框架cpp-tbox之事件驱动EventLoop
Reactor模式是一种事件驱动的设计模式,广泛应用于异步I/O处理,特别是在需要高效处理大量并发连接的服务器程序中,如Web服务器、数据库服务器、即时通讯软件等。Reactor模式的核心组件是一个事件循环(EventLoop)线程,它负责监听、分发并处理来自I/O源的事件。cpp-tbox采用的也是Reactor模式,为了便于我们理解什么是Reactor模式,库作者给出过一个贴近生活的例子:Reactor线程就像是一个银行的办事柜台。原创 2024-10-10 11:20:19 · 1398 阅读 · 0 评论 -
Linux应用框架cpp-tbox之事件驱动Event
在Linux中,信号处理有时被视为是不安全的,此时可以考虑使用pipe、signalfd、eventfd等机制来提高信号处理的安全性。原创 2024-10-10 11:31:27 · 1073 阅读 · 0 评论 -
Linux应用框架cpp-tbox之线程池
私有数据成员指针封装(内部结构体指针封装)。在面向对象编程中,它体现了封装和数据隐藏的原则,即将数据成员(这里是Data结构体)声明为私有,并通过一个指向该类型的指针(d_)来管理访问和操作,从而保护数据成员不受外界直接干预,仅通过类提供的接口进行交互。条件变量是实现线程池的核心。原创 2024-10-10 11:41:49 · 1190 阅读 · 0 评论 -
Linux应用框架cpp-tbox之应用层缓冲
在非阻塞IO模型+IO复用编程模型中,应用层缓冲是必须的。系统调用(如read, write, open, close等)涉及用户态到内核态的转换,这一过程相对耗时,尽量减少系统调用是提高程序性能的一种策略,特别是在性能敏感和高并发的系统中尤为重要。原创 2024-10-11 13:45:28 · 900 阅读 · 0 评论 -
Linux应用框架cpp-tbox之串口通信
通过将一个类的对象作为另一个类的成员变量,可以让一个对象“委托”另一个对象来处理某些功能。这种方式可以避免继承的复杂性,提高代码复用。原创 2024-10-11 13:50:35 · 577 阅读 · 0 评论 -
Linux应用框架cpp-tbox之TCP通信(上篇)
总体来说TCP连接断开的难度大运TCP连接建立的难度;TCP数据发送的难度大于TCP数据接收的难度。相比直接使用Socket API进行网络编程,使用网络库可以避免踩坑。原创 2024-10-12 08:45:13 · 1403 阅读 · 0 评论 -
Linux应用框架cpp-tbox之TCP通信(下篇)
TCP客户端实现的难点在于建立连接时的错误处理、重试和重连。由于TcpConnector具备反复尝试连接的功能,因此客户端和服务端的启动顺序无关紧要。基于Reactor模式的非阻塞网络编程,和我们以前主动调用Socket API的编程方式大相径庭,是从主动调用到被动回调的转变。原创 2024-10-15 09:02:59 · 649 阅读 · 0 评论 -
Linux应用框架cpp-tbox之UDP通信
TCP服务端会为每个客户端分配一个文件描述符,而对于UDP服务端,所有的客户端共用一个文件描述符。由于UDP自身的特点,在编程时简单了许多。原创 2024-10-21 09:01:33 · 886 阅读 · 0 评论 -
Linux应用框架cpp-tbox之HTTP
TCP是基于字节流的传输层通信协议,在实际使用过程中需要设计好消息边界。中间件的思想有借鉴意义,C++的实现简洁、漂亮。原创 2024-10-25 09:06:34 · 1033 阅读 · 0 评论 -
Linux应用框架cpp-tbox之jsonrpc
rpc其实就是封装了一下通信过程,没有什么神奇的。原创 2024-11-29 13:32:25 · 940 阅读 · 0 评论 -
Linux应用框架cpp-tbox之状态机
和基于状态模式实现的状态机相比,cpp-tbox中状态机的实现十分简单,但是简单并不意味着容易。原创 2024-11-29 13:40:00 · 997 阅读 · 0 评论