logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Linux生产者消费者模型

本文介绍了多线程编程中的生产者消费者模型及其实现方法。首先阐述了生产者消费者模型的基本概念,通过超市的比喻解释了缓冲区的作用和解耦思想。然后详细讲解了三种实现方式:基于阻塞队列、环形队列和线程池的生产消费模型,并分析了各自的优缺点。文章还探讨了条件变量和信号量在同步机制中的应用,以及读写锁的原理和读者写者问题。最后通过代码示例展示了线程池的单例模式实现。全文系统地讲解了多线程编程中的关键技术和常见

文章图片
#linux#服务器#c++
【语法】C++的智能指针

本文介绍了C++智能指针的实现原理及其在异常安全中的应用。主要内容包括: 传统指针在异常发生时可能导致内存泄漏,智能指针通过RAII技术自动管理资源释放; 三种智能指针的实现:auto_ptr(管理权转移)、unique_ptr(防拷贝)、shared_ptr(引用计数); shared_ptr的线程安全实现及循环引用问题,通过weak_ptr解决; 定制删除器的应用场景; RAII机制在锁管理中

文章图片
#c++#开发语言
Linux线程的同步与互斥

本文深入探讨了多线程编程中的互斥锁机制。首先通过一个抢票程序的案例,展示了共享资源在多线程环境下可能出现的数据不一致问题(如票数变为负数)。文章详细分析了线程切换导致的竞态条件,并介绍了互斥锁的基本使用方法,包括初始化、加锁、解锁等操作。随后讲解了互斥锁的实现原理,指出其通过原子性操作保证线程安全。文章还提供了互斥锁的RAII风格封装实现,并区分了可重入函数与线程安全的概念。最后讨论了死锁的四种必

文章图片
#linux#c++#服务器
【语法】C++的异常

C++异常机制是处理错误的一种现代方法,相比C语言返回错误码的方式具有明显优势。传统错误处理方式存在查找错误码麻烦、无法处理某些特殊返回值等问题,而异常机制通过try-catch块可以灵活捕获和处理错误。异常抛出后会在调用栈中查找匹配的catch块,遵循就近匹配原则。异常使用时需要注意内存泄漏等异常安全问题,可以采用RAII技术解决。实际开发中通常会建立自定义异常体系,通过基类捕获各种派生类异常。

文章图片
#c++#开发语言
【基础算法】二维差分(C语言)

在学习二维差分之前,我们先复习一下一维差分给定一个数组要对这个数组差分,也就是对这个数组的l到r个元素同时操作(加减),比如对这个数组的下标1到3的元素都进行+2操作但这种操作太过于繁琐,于是可以用到一维前缀和先创建一个比原数组大一个的标记数组在当前位置起始位置+2,并在末尾位置的下一个-2再把求出标记数组的前缀和,就变成了此时sumarr+arr的值就是差分后的结果了。

文章图片
#算法#数据结构
【基础算法】二维前缀和(C语言)

在学习二维前缀和之前,我们先来复习一下一维前缀和:给定一个数组要求这个数组的前缀和,需要再创建一个数组sum[5]={0};当i=0时否则这样arr的前缀和数组sum就求出来了,如果现在想要知道arr[i]到arr[j]的和,就可以用公式。

文章图片
#算法#数据结构
到底了