
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
本文介绍了三种I/O多路复用技术:poll、epoll(LT/ET模式)及其实现原理。poll通过pollfd结构监听文件描述符,解决了select的位图限制但仍有性能瓶颈;epoll采用事件驱动机制,通过红黑树和就绪队列高效管理大量连接,支持水平触发(LT)和边缘触发(ET)模式。文章详细分析了epoll的三个系统调用(create/ctl/wait),比较了LT和ET模式的特点:LT会重复通知

本文介绍了线程互斥与同步的核心概念。首先讲解了线程互斥原理,包括临界资源、临界区等概念,并通过售票系统案例演示了互斥量的使用方法和实现原理。接着阐述了线程同步机制,重点讲解了条件变量的使用及其封装方法。文章详细分析了生产者消费者模型,包括基于阻塞队列和环形队列的实现方式,并比较了二者的特点。最后介绍了POSIX信号量的基本操作及其在多线程同步中的应用。通过RAII风格的封装示例,展示了如何将这些底

摘要:本节主要讲解了线程互斥与同步的实现原理及典型应用。首先介绍了临界资源、临界区等基本概念,并通过售票系统案例展示了共享变量操作的问题。重点讲解了互斥量(mutex)的使用方法,包括初始化、加锁解锁操作及其实现原理。其次详细阐述了条件变量和生产者消费者模型,包括阻塞队列和环形队列两种实现方式,并分析了pthread_cond_wait需要互斥量的原因。最后介绍了POSIX信号量的使用方法,并展示

本文介绍了如何构建单目录多文件的C项目,重点讲解了Makefile的使用技巧。主要内容包括:1) 使用wildcard函数自动获取.c文件并转换为.o目标文件;2) 实现多文件编译为可执行程序;3) 将临时文件和可执行程序分离到不同目录。关键点包括:Makefile中的变量赋值方式(=与:=的区别)、addprefix函数的使用、目录结构管理等。通过示例展示了如何自动生成100个.c文件和对应的m

本文展示了一个自动化生成C语言项目框架的bash脚本(mkcode.sh),用于创建包含100个模块的多文件项目结构。脚本功能包括:自动生成头文件(.h)和源文件(.c),创建模块化目录结构,生成main函数文件,以及为每个模块创建独立的Makefile。项目采用分层管理,包含10个模块目录(Module0-Module9),每个模块包含10个源文件和对应的头文件。顶层Makefile支持批量编译

本文系统介绍了Linux信号机制的核心概念与应用。主要内容包括:1)信号的基本概念与生活类比(如快递接收);2)信号的产生方式(终端按键、系统调用、硬件异常等);3)信号处理的三种方式(默认、忽略、自定义捕捉);4)重要系统函数(signal、kill、raise、abort、alarm等)的使用示例;5)硬件异常与信号的关系;6)Core Dump机制及其调试应用。文章通过大量代码示例演示了信号

本文深入剖析了STL中list容器的实现原理与设计思想。list采用带头节点的双向循环链表结构,具有O(1)时间复杂度的插入删除操作和稳定的迭代器特性。文章从节点结构、迭代器设计、内存管理等角度,详细讲解了list的核心实现机制,包括哨兵节点的作用、迭代器的封装技巧、RAII资源管理原则等。特别强调了STL list的工程实现细节,如边界条件处理、const正确性保证、异常安全设计等。通过对比ST

本文摘要:文章详细介绍了Linux进程管理的核心概念和技术。首先讲解fork()函数创建子进程的过程,包括写时拷贝机制和父子进程的执行流程。其次分析了进程终止的三种场景和退出方法(exit/_exit/return),并解释了退出码的含义。接着重点阐述了进程等待的必要性,详细说明了wait()和waitpid()的使用方法,包括阻塞/非阻塞等待和状态获取。最后介绍了进程程序替换的exec函数族,解

本文摘要: 计算机系统基于冯诺依曼体系结构,由输入设备、CPU、内存和输出设备组成,所有设备仅能与内存直接交互。操作系统(OS)作为基础程序集合,提供系统调用接口供上层开发使用。进程是程序执行的实体,由内核数据结构(task_struct)和程序代码/数据组成,具有独立地址空间。进程状态包括运行(R)、睡眠(S)、停止(T)和僵尸(Z)等。进程优先级通过nice值调整,Linux采用O(1)调度算








