cpp
文章平均质量分 81
coolhuhu~
做三四月事,在八九月自有答案。
展开
-
《C++并发编程》之正确使用thread和jthread
C++11从语言层面引入了多线程编程的能力,使得开发者可以通过标准库提供的 thread 等库实现跨平台的多线程编码。标准库中的 thread 等库为开发者屏蔽了不同平台下的多线程实现细节,提供了统一的编程接口,并且可以和标准库中的其它库一同使用,提高程序的开发效率。原创 2024-05-06 10:51:54 · 906 阅读 · 0 评论 -
c++11引入的constexpr关键字
c++11引入了 constexpr 关键字,容易与 const 关键混淆。下面从两个方面理解 constexpr 关键字的用途。原创 2024-04-24 10:50:45 · 717 阅读 · 1 评论 -
【muduo源码学习】多线程下的 one loop per thread
多线程多Reactor模型的实现,主要涉及 Thread、EventLoopThread 和 EventLoopThreadPool 这三个类,下面依次进行介绍。原创 2024-04-16 08:49:36 · 1010 阅读 · 0 评论 -
【muduo源码学习】one-loop-per-thread核心原理
在 TCP 网络编程中,这里我们特指在单机的环境下,主要关注两件事。第一,如何正确的处理TCP的连接和断开,以及正确处理数据的收发;在错综复杂的网络环境中,这并非易事,涉及很多细节。第二,如何榨干机器的性能,即如何让单台机器在已有的硬件条件下处理尽可能多的连接请求;这需要设计一种高效的网络模型。原创 2024-04-16 08:45:13 · 701 阅读 · 0 评论 -
Windows-WSL2-VSCode+Docker配置C++开发环境
使用Docker配置C++开发环境。原创 2024-03-13 14:25:52 · 1027 阅读 · 0 评论 -
使用一个定时器(timer_fd)管理多个定时事件
如何使用 timerfd 管理多个定时事件原创 2024-01-27 20:04:53 · 1259 阅读 · 1 评论 -
std::bind中传入的实参变量的生命周期不能短于生成的可调用对象的生命周期
在使用bind生成可调用对象时,bind的中传入的实参变量的生命周期不能短于生成的可调用对象的生命周期。原创 2024-01-24 14:03:07 · 382 阅读 · 0 评论 -
Linux中timerfd系列函数使用指南
Linux中,timerfd_create、tiimerfd_settime、timerfd_gettime 函数使用指南。原创 2024-01-23 09:43:14 · 1117 阅读 · 0 评论 -
C语言中的标准IO
本文对 Linux 下C语言的标准IO进行总结,所有代码示例均在 Ubuntu-20.04、GCC 11.3.0 环境下运行通过。原创 2023-12-29 10:19:52 · 1068 阅读 · 0 评论 -
优先考虑基于任务的编程而非基于线程的编程
而 async 以一种隐式的方式开启一个异步任务,”看不到线程“,从编码模式上看,和同步编程的模式类似,对比基于线程的编程方式,基于任务的设计为开发者避免了手动线程管理的痛苦(这种调用方式将线程管理的职责转交给C++标准库的开发者),并且自然提供了一种获取异步执行程序的结果(即返回值或者异常)的方式。async 和 thread 的另一个重要区别为,async 没有将创建的线程 detach 的机制,因此在调用 async 的作用域中,会等待 async 执行的异步任务完成之后才会离开其作用域。原创 2023-12-14 21:07:45 · 856 阅读 · 0 评论 -
C++中计算函数运行时长的工具类
c++中计算函数运行时长的工具类原创 2023-11-07 09:48:56 · 86 阅读 · 0 评论 -
auto自动类型推导总结
auto 推导出的是 “值类型”,不会是 “引用类型”。原创 2023-10-31 17:19:42 · 160 阅读 · 0 评论 -
从语言层面了解线程(std::thread)使用的里里外外
如何利用理解 thread 的 joinable 和 unjoinable 状态,如何使用 future 和 promise 在线程之间通信。原创 2023-10-24 19:36:49 · 87 阅读 · 0 评论 -
从一道面试题开始学习C++标准库提供的并发编程工具
一个空列表,用两个函数(只可调用一次)轮流写入值(一个写奇数,一个写偶数), 最终实现列表的值为1-100,有序排列。原创 2023-10-19 22:59:52 · 579 阅读 · 1 评论 -
使用STL algorithm 解决一些算法问题
原地将 [first, last) 中的元素重新排列为下一个字典序更大的排列。若当前排列存在下一个更大的排列,则返回 true,并生成下一个更大排列;若不存在,则返回 false,按从小到大的顺序排列。思路:对序列 [1, 1, 1, 0, 0, 0, 0] 做全排列,对于每个排列,输出数字1对应的位置上的元素。从 7 个不同元素中取出 3 个元素的所有组合。,返回删除后数组的新长度。范围内的每个元素分配连续递增的。删除重复出现的元素,使每个元素。原创 2023-09-15 15:14:03 · 39 阅读 · 0 评论 -
设计模式之单例模式
采用了单例模式的类是指,在程序的整个生命周期中,该类只能有唯一一个实例化对象。原创 2023-08-11 14:16:02 · 36 阅读 · 0 评论 -
muduo网络库学习笔记之日志系统
muduo日志系统采用的是多生产者单消费者模型,基本思路是,前端线程(产生日志消息的线程)和后端线程(负责将缓冲区中的日志信息写入磁盘文件的线程)各自维护一块buffer,前端线程维护bufferA,后端线程维护bufferB。原创 2023-08-10 16:19:39 · 132 阅读 · 0 评论 -
在多线程环境中使用pthread_once函数初始化全局资源
POSIX线程库提供了一个名为 `pthread_once` 的函数,可以在多线程环境下,确保某个函数只被调用一次。原创 2023-08-08 13:57:05 · 89 阅读 · 0 评论 -
使用GDB调试程序(Quick Start)
GDB调试程序,快速上手原创 2023-07-20 11:31:13 · 184 阅读 · 0 评论 -
C++中的static关键字
从两个角度来分析 static 关键字:与类相关和与类无关。与类无关,即C语言中的static关键字部分;与类相关,即C++中static关键字与类成员。原创 2023-06-25 20:03:09 · 47 阅读 · 0 评论 -
《Linux高性能服务器编程》学习笔记-----服务器程序架构
《LInux高性能服务器编程》之服务器程序架构的学习笔记总结。原创 2023-06-24 11:56:27 · 844 阅读 · 0 评论 -
四种强制转换 reinterpret_cast、const_cast、static_cast、dynamic_cast
四种强制转换 reinterpret_cast、const_cast、static_cast、dynamic_cast原创 2023-06-20 22:46:49 · 133 阅读 · 0 评论 -
设计模式之装饰器模式
装饰器模式中新增加的功能一定要是在不改变原有实现的前提下,这也是设计模式中要遵循的开放封闭原则。通过采用组合而非继承的手法, Decorator模式实现了在运行时 动态扩展对象功能的能力,而且可以根据需要扩展多个功能。避免 了使用继承带来的“灵活性差”和“多子类衍生问题”。Decorator类在接口上表现为is-a Component的继承关系,即 Decorator类继承了Component类所具有的接口。原创 2022-12-10 16:38:57 · 303 阅读 · 0 评论 -
设计模式之模板方法(Template Methods)
设计模式之模板方法原创 2022-12-06 10:09:37 · 249 阅读 · 0 评论 -
Windows下使用VSCode搭建cpp开发环境
windows下使用VSCode搭建cpp开发环境,使用CMake构建项目原创 2022-12-03 23:10:07 · 2349 阅读 · 0 评论 -
Linux下网络编程常用函数
Linux下网络编程常用函数原创 2022-11-29 21:21:34 · 201 阅读 · 0 评论