自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(375)
  • 资源 (12)
  • 收藏
  • 关注

原创 C++程序员如何高薪就业?岗位直达服务介绍

C++程序员如何高薪就业?

2024-10-21 10:46:36 407

原创 线程执行顺序控制

方法原理优点缺点join()主线程主动等待线程结束简单、适合主控线程不适合异步启动 T3join()in T3T3 内部等待 T1、T2 完成控制灵活线程间传引用复杂信号量控制信号量顺序适合多线程同步代码逻辑较为底层条件变量条件通知 + 计数器控制精确控制、系统效率高实现略复杂互斥锁组合锁释放触发条件可行性低不推荐,逻辑易出错😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-13 11:05:37 317

原创 用户级线程和内核级线程的区别

对比维度用户线程(ULT)内核线程(KLT)是否依赖内核否,完全在用户空间是,由操作系统内核管理切换效率高,不需要陷入内核低,需进行系统调用并行能力差,多核系统中仍在单核上执行强,支持多线程在多个核上并行执行阻塞影响一个线程阻塞,整个进程挂起一个线程阻塞,不影响其他线程使用资源少,线程开销小多,内核需维护每个线程上下文应用场景高并发、计算密集型、需要大量线程时使用高可靠性、多核并行、需操作系统调度时使用。

2025-06-13 11:04:54 240

原创 常见的锁机制

/ 保护读者数量mutex wmtx;// 写者互斥锁int rcnt;// 当前读者数量锁类型是否睡眠等待适合场景并发粒度说明互斥锁是通用互斥严格串行系统调度开销较大条件变量是状态通知等待通知唤醒通常配合互斥锁使用自旋锁否锁时间极短忙等待高性能但可能浪费 CPU读写锁否(可自旋)读多写少读共享、写互斥提升读并发效率实际开发中,锁的选择要根据临界区持有时长访问频率和系统资源。

2025-06-13 10:42:09 352

原创 信号量的作用及其原理

信号量是高并发场景下常用的同步工具,可灵活控制资源数量与线程调度流程。其解耦能力强,适合复杂多线程通信场景。而互斥量更适合用来保护单一临界资源。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-13 10:37:44 264

原创 互斥锁与条件变量

同步原语功能是否阻塞典型场景互斥锁 mutex保证同一时间只有一个线程访问资源是临界区保护条件变量 cond控制线程等待某个条件并被通知唤醒是任务队列、信号同步通过对互斥锁与条件变量的封装,可以提高线程同步代码的可读性和可维护性,在实际开发中属于多线程同步的基础设施。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-13 10:37:05 143

原创 什么是临界区

临界区是线程同步的一种手段,用于保护共享资源,确保同一时间只有一个线程可以访问指定资源,防止数据竞争或不一致。

2025-06-12 14:32:44 276

原创 常见的进程和线程调度算法

调度算法是否抢占适合任务公平性响应性调度开销饥饿风险FIFO否相似长度任务高差低有SJF/SRTSRT 抢占短任务低高高高(长任务)RR是I/O 密集或平均任务高一般高无Max-Min是多资源竞争高一般高无MFQ是通用场景高高中无这些调度算法各有侧重。现代操作系统通常采用多级反馈队列结合动态负载均衡策略,并根据不同任务(计算型、I/O型)灵活调度,以提高整体系统性能与响应能力。

2025-06-12 14:32:12 387

原创 常见的进程调度算法

调度算法是否抢占是否公平是否考虑任务长度是否考虑等待时间饥饿可能性适用系统FCFS否否否否有批处理系统SJF否否是否有预测执行时间明确的系统HRRF否部分是是少多任务批处理系统SRT是否是否有实时性较高系统RR是是否否无分时系统MLFQ是是是(间接)是(间接)低通用调度😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-12 12:42:14 308

原创 线程安全问题分类以及注意场景

问题类型关键表现常见场景解决方式数据竞争结果不正确++、-- 等加锁、原子操作初始化问题空指针、未定义行为单例、全局变量延迟安全初始化活跃性问题程序卡死或执行不前死锁、活锁、饥饿控制锁顺序、优先级😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-12 12:40:06 117

原创 什么是线程安全

当多个线程访问一个对象时,不需要额外的同步控制(如加锁、条件变量等),也不会出现竞态条件,这样的对象或函数就被称为线程安全的。反之,如果多个线程并发访问同一个对象时可能会产生数据竞争(data race),则该对象或函数是线程不安全的。对比项线程安全线程不安全数据一致性能保证并发下数据正确性存在竞态,数据可能错误编码复杂度需要加锁、同步处理编码简单性能表现存在线程间互斥,可能略低无锁开销,性能好但风险大适用场景高并发场景、关键资源保护临时数据、局部变量处理等场景。

2025-06-12 12:38:18 111

原创 多进程和多线程的区别

面试官提问:请简要说明多进程和多线程的区别,什么时候该使用多线程,什么时候该使用多进程?应聘者参考回答:多进程和多线程是并发编程中常见的两种方式,它们各有优缺点,适用于不同的应用场景。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-11 14:46:17 249

原创 共享内存是什么

共享内存是一种速度最快的进程通信方式,但使用者必须自己处理访问控制和同步问题。进程间共享缓存多媒体数据交换高速日志共享在实际工程中,通常共享内存 + 信号量/锁机制组合使用,构建高效、安全的进程间通信方案。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-11 14:45:45 402

原创 系统并发和并行

并发强调任务管理能力:多个任务在系统中交错存在,由操作系统调度运行;并行强调执行效率提升:多个任务物理上在多个处理单元中并行推进;操作系统通过进程、线程机制实现并发;系统硬件架构决定能否并行。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-11 14:44:51 278

原创 并行和并发

概念定义并发多个任务在同一时间段交替执行(宏观同时)并行多个任务在同一时刻物理同时执行(微观同时)类比方式并发并行概念管理多个任务执行多个任务时间关系看似同时,实际交替真正同时系统需求可在单核实现需多核或多处理器编程目标提高吞吐/响应提高执行速度(加速)

2025-06-11 14:43:54 224

原创 服务端怎么实现并发

特性多线程模型I/O 多路复用模型并发方式每连接一个线程一个线程处理多个连接系统资源消耗高,线程数量大,频繁切换低,少量线程可支撑大量连接编程复杂度低高适合场景中低并发、业务处理耗时较长高并发、IO 密集型服务举例简单聊天室服务Web服务器、消息网关、IM长连接等😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-11 14:43:22 276

原创 生产者消费者模型

单生产者单消费者模型的核心是互斥访问缓冲区 + 条件同步控制流程缓冲区满时写入(阻止生产者);缓冲区空时读取(阻止消费者);这使得线程间通信既高效又安全,且不会出现死锁或竞争条件。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-10 14:48:39 340

原创 进程的五种状态

通过五态或七态模型,操作系统可以高效地管理 CPU 和系统资源分配,使进程执行具备良好的调度性和响应性。进程调度器在这其中扮演关键角色,确保系统公平、高效运行。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-10 14:47:04 395

原创 epoll的优点

优点说明并发能力强支持数万甚至数十万连接,无硬性 FD 数量限制性能稳定活跃触发模式,性能不随连接数增长而下降系统开销低使用 mmap 减少用户态与内核态之间的数据复制因此,epoll是现代高性能网络服务器(如 Nginx、Redis)广泛采用的 I/O 模型。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-10 14:45:56 170

原创 线程池实现原理

线程池调度任务的过程体现了**“能用核心线程就用核心线程,不能就排队,排不下就扩容线程,再不行就拒绝”**的思想。这样既能保障性能,也能避免资源滥用。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-10 14:39:38 169

原创 线程池有哪些优点

面试官提问:请简要说明使用线程池有哪些优点?应聘者参考回答:线程池是一种用于管理大量线程的机制,其核心思想是提前创建一定数量的线程,在任务到来时复用这些线程进行处理,从而避免频繁创建和销毁线程。

2025-06-10 14:38:23 104

原创 TCP 中的半开连接和半关连接

半开连接指的是TCP 一端已关闭或异常断开,而另一端仍然保持 ESTABLISHED 状态。一端主机突然断电或网络中断,未发送 FIN 通知对端;对端仍以为连接正常存在,可能继续发送数据;一旦对端尝试发送数据,会收到 RST 响应,标识连接异常中断;会导致 TCP 资源泄露或连接假死现象;通常由TCP Keepalive 检测机制来发现并清理。TCP 半关连接指一方调用shutdown()或发送 FIN 关闭一个方向的数据传输,而另一方仍可单向传输数据。例如:客户端调用。

2025-06-09 15:51:50 592

原创 close()与 shutdown()区别

如果你希望只关闭某个方向的数据传输而继续保持连接,应使用shutdown();如果需要彻底释放连接资源,则使用close();先shutdown()→ 再read()→ 最后close()😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-09 15:50:56 392

原创 TCP 服务器调用过程

*面试官提问:**请简要说明建立一个 TCP 服务器需要经历哪些系统调用步骤?并说明客户端的连接和通信过程。

2025-06-09 15:50:09 266

原创 fork()之后的资源

需要注意的是,虽然一些资源在物理内存上可能最初是共享的(例如通过写时复制 Copy-On-Write 技术),但逻辑上仍被视为不共享。会创建一个子进程,该子进程是父进程的副本,但并不是所有资源都共享。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。之后,父子进程之间哪些资源是共享的,哪些资源是独有的?**应聘者参考回答:**在 Linux 系统中,调用。**面试官提问:**请问在调用。

2025-06-09 15:49:37 134

原创 在程序中创建一个新线程

*面试官提问:**请问如何在一个程序中创建一个新线程?请分别说明在 Linux 和 Windows 下的实现方式。在 Linux 中,通常使用 POSIX 线程库(pthread)来创建线程。由于 pthread 不是 Linux 默认链接的库,所以编译时需要显式地添加。这两种方式都可以实现线程的创建,只是 API 接口和使用方式略有差异。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。该函数定义在 Windows API 中。在 Windows 系统中,可以使用。

2025-06-09 15:49:08 167

原创 同步IO与异步IO

对比项同步 IO异步 IO函数返回时机IO 完成后返回IO 提交后立即返回线程是否阻塞阻塞非阻塞并发能力差(需多线程)高(单线程可发起多个 IO)使用复杂度简单复杂(需事件通知或回调)典型场景控制流清晰,性能要求不高高并发网络通信、服务器后端等😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-06 11:07:52 117

原创 异步 Socket 中 send 失败的原因

异步 socket 编程中。

2025-06-06 11:07:13 145

原创 什么是死锁以及常见的避免方法

死锁是多线程编程中必须避免的问题,需在程序设计阶段通过。

2025-06-06 11:06:09 163

原创 生产者消费者模型

优点说明解耦生产者和消费者通过交易场所间接通信支持并发多生产者/消费者可以并发执行支持忙闲不均队列缓冲机制支持速率差异若需精细控制线程行为,建议使用信号量方案;若需结构清晰、易维护,优先选择互斥锁 + 条件变量方式;在支持语言中(如 Java),可直接利用管程/锁机制实现。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-06 11:05:36 233

原创 多线程 vs 多进程

项目中如何选择使用多进程还是多线程?分别适用于哪些场景?请简要说明你对两者适用性的理解。选择多进程还是多线程,取决于等多方面因素。

2025-06-05 22:06:43 286

原创 常见线程锁及其应用场景

不同类型的锁适用于不同的并发访问场景,合理选择加锁机制,既能保证线程安全,又能最大程度提高程序性能。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-05 22:06:12 197

原创 线程数如何设置

任务类型特点说明推荐线程数CPU 密集型计算为主、无 I/O 阻塞CPU 核心数 + 1I/O 密集型阻塞为主、I/O 多、计算少通常为核心数的 2~4 倍甚至更多线程数量的合理配置应考虑任务特征(CPU 还是 I/O 密集)、CPU 核心数、线程执行周期中计算与等待的比例。使用线程池并动态调整线程数是一种更高效的方式。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-05 22:05:01 211

原创 信号量和互斥锁的区别

互斥锁更像是“钥匙”,只有持有钥匙的线程才能进入。信号量更像是“计数器”,允许多个线程依据计数进行同步调度。合理选择同步机制是确保并发程序正确性和高性能的关键。互斥锁适合保护单一资源的访问,信号量适用于资源配额控制或线程同步协作。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-05 22:03:10 252

原创 线程间通讯方式

通信方式Linux支持Windows支持适用场景互斥锁是是(等)基本互斥控制条件变量是是(需封装)线程等待某条件发生信号量是是(控制资源数量消息机制否是线程间异步通知全局变量是是简单共享,需同步保护CEvent对象否是(MFC专有)多线程同步选择通信方式要结合线程的同步需求资源共享程度以及操作系统平台特性进行合理搭配。多数情况下,Linux 更偏向底层控制,Windows 更偏向事件驱动与消息机制。

2025-06-05 22:01:13 268

原创 线程同步的常见方式

同步方式是否支持跨进程控制粒度特点与使用场景互斥锁仅线程间独占访问快速、适合互斥访问,线程内常用条件变量仅线程间状态通知搭配互斥锁,适合等待条件满足信号量支持计数控制适合并发访问控制(如限流)事件机制平台相关(如Win)通知机制适合任务阶段同步,线程通信临界区仅线程间轻量互斥性能好但仅限单进程内部合理选择线程同步机制是高并发程序性能与安全性的保障,需根据访问控制需求、进程/线程边界、资源数量等因素综合考虑。

2025-06-04 15:17:52 372

原创 线程共享的资源

线程在提高程序并发性的同时,也引入了共享资源访问的同步问题。掌握共享与独享资源的边界,是编写安全高效多线程程序的基础。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-04 15:17:03 263

原创 进程与线程联系与区别

线程是进程的组成部分,二者相辅相成;在现代操作系统中,多线程被广泛应用以提高程序并发度与响应速度;开发中需注意线程同步与资源共享冲突问题,避免数据竞争。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-04 15:16:30 247

原创 冯诺依曼结构

冯诺依曼结构强调程序和数据的统一存储;指令逐条顺序执行(除非有跳转);现代计算机已在此基础上发展出更复杂的体系结构,但仍遵循其基本模型。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-04 15:15:43 194

原创 Linux 中进程与线程的最大数量及其限制因素

类型理论上限决定因素进程数默认 32768pid_max,系统资源,内核调度能力单进程线程数约 300(32 位)用户态虚拟空间、线程栈大小、ulimit 限制64 位系统由于地址空间更大(理论上 2⁶⁴),可创建更多线程,远高于 32 位系统。😀 关注 @公众号 程序员陈子青,获取更多 C++ 技术支持。

2025-06-04 15:14:57 242

C++ Hook DirectX 11的内部Imgui绘制的框架封装C++ Hook DirectX 11的内部Imgui绘制的

C++ Hook DirectX 11的内部Imgui绘制的框架封装C++ Hook DirectX 11的内部Imgui绘制的框架封装C++ Hook DirectX 11的内部Imgui绘制的框架封装C++ Hook DirectX 11的内部Imgui绘制的框架封装C++ Hook DirectX 11的内部Imgui绘制的框架封装C++ Hook DirectX 11的内部Imgui绘制的框架封装C++ Hook DirectX 11的内部Imgui绘制的框架封装C++ Hook DirectX 11的内部Imgui绘制的框架封装C++ Hook DirectX 11的内部Imgui绘制的框架封装C++ Hook DirectX 11的内部Imgui绘制的框架封装C++ Hook DirectX 11的内部Imgui绘制的框架封装C++ Hook DirectX 11的内部Imgui绘制的框架封装C++ Hook DirectX 11的内部Imgui绘制的框架封装C++ Hook DirectX 11的内部Imgui绘制的框架封装C++ Hook DirectX 11的内部Im

2022-10-07

C++ 面向对象实现的雷霆战机游戏,带音乐 ,主角带动态特效。完整源码 EasyX

C++ 面向对象实现的雷霆战机游戏,带音乐 ,主角带动态特效。C++ 面向对象实现的雷霆战机游戏,带音乐 ,主角带动态特效。C++ 面向对象实现的雷霆战机游戏,带音乐 ,主角带动态特效。C++ 面向对象实现的雷霆战机游戏,带音乐 ,主角带动态特效。C++ 面向对象实现的雷霆战机游戏,带音乐 ,主角带动态特效。C++ 面向对象实现的雷霆战机游戏,带音乐 ,主角带动态特效。C++ 面向对象实现的雷霆战机游戏,带音乐 ,主角带动态特效。C++ 面向对象实现的雷霆战机游戏,带音乐 ,主角带动态特效。C++ 面向对象实现的雷霆战机游戏,带音乐 ,主角带动态特效。完整源码 EasyX

2022-07-28

MFC 标签页 TabSheet.h TabSheet.cpp

MFC 标签页 TabSheet.h TabSheet.cppMFC 标签页 TabSheet.h TabSheet.cppMFC 标签页 TabSheet.h TabSheet.cppMFC 标签页 TabSheet.h TabSheet.cppMFC 标签页 TabSheet.h TabSheet.cppMFC 标签页 TabSheet.h TabSheet.cppMFC 标签页 TabSheet.h TabSheet.cppMFC 标签页 TabSheet.h TabSheet.cppMFC 标签页 TabSheet.h TabSheet.cppMFC 标签页 TabSheet.h TabSheet.cppMFC 标签页 TabSheet.h TabSheet.cppMFC 标签页 TabSheet.h TabSheet.cpp

2022-07-19

DLL注入工具 纯净版

DLL注入工具纯净版 安全无毒

2020-11-14

ExamSys.rar

C/C++ 基于Qt的考试系统 科目一驾校考试 完整项目源码

2021-04-22

Inject.exe

原创dll 注入工具 简易安全。纯净无毒。可供学习者使用。有问题请反馈作者。 原创dll 注入工具 简易安全。纯净无毒。可供学习者使用。有问题请反馈作者。 原创dll 注入工具 简易安全。纯净无毒。可供学习者使用。有问题请反馈作者。

2020-11-12

MyChat.rar

MyChat.rar

2020-12-26

chat.rarqt 聊天程序源码 qt 聊天程序源码 qt 聊天程序源码

qt 聊天程序源码 qt 聊天程序源码qt 聊天程序源码qt 聊天程序源码qt 聊天程序源码

2021-11-17

C++雷霆战机 完整源码!

C++雷霆战机完整源码

2020-11-14

聊天室1.0.exe

基于MFC的QQ聊天程序

2020-12-25

V13-终结版.zip

影视网站PHP完整源码

2021-02-14

QQ连连看.exe自动走棋 无线赢

QQ连连看.exe自动走棋 无线赢

2021-01-22

PlaneGame.rar

Java 编写的 雷霆战机游戏 附带教学视频

2019-10-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除