自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 【C/C++】多进程编程3:进程方法

经常被操作系统爱的同学们都知道,进程是分配资源的最小单元,程序的一次执行的过程就是一个进程。比方说我在电脑上打开了下这么多软件,它们在计算机中独立的运行。这些在计算机中运行的程序都是一个进程。假设你的电脑是一个工业区,那么这里面的工厂就是一个进程,每个工厂都有自己的材料,产线,工人,资源。这些都是相互独立的。那么有些人就问了,进程和线程有什么区别呢?线程其实是在进程之中的,它是(进程内)系统调度的最小单位。在一个工厂中有着许多的产线,有生产塑胶的,有生产螺丝的,有生产钢管的。。。

2025-08-06 22:28:32 1173 1

原创 【C/C++】多进程编程2:共享内存

共享内存是最高效的IPC机制,因为它不涉及进程之间的数据传输。这种高效率带来的问题是,我们必须使用其他辅助手段来同步对共享内存的访问。否则会发生竞态。因此,共享内存通常和其他通信方式一起使用。Linux提供的共享内存API都定义在shmgetshmatshmdtshmctl。注意:本文有一部分涉及到了信号量的操作,如果有疑问请移步到https://blog.youkuaiyun.com/2403_82787036/article/details/149909338?

2025-08-05 23:05:43 752 1

原创 【C/C++】多进程编程1:信号量

当多个进程同时访问资源上的某个资源的时候,比如同时写一个数据库的某一条记录,或者同时修改某个文件,就需要考虑进程同步的问题,以确保任意时刻只有一个进程可以拥有对资源的独占访问。通常程序对共享资源的访问代码只是很短的一段,但就在这一段代码引发了进程之间的竞态条件。我们称这段代码为关键代码区。对进程同步,也就确保任意时刻只有一个进程能进入关键代码段。要做到这一点,就要使用信号量(Semaphore)。等待(wait)和信号(signal)。也就是多进程编程中的操作。若SV > 0, 就将其减去1;

2025-08-04 20:54:52 1099

原创 【C/C++】异步编程

异步编程是一种编程范式,允许程序在等待某些操作完成的时候继续执行其他的任务,而不是阻塞/等待这些操作完成。在传统的同步编程里,代码是按顺序执行的,每个操作必须等待前一个操作完成,这种方式在处理I/O操作,网络请求或计算密集型任务的时候可能会导致程序的性能瓶颈。比如说:当你想要获取数据的时候,他会等待数据返回后执行,这期间CPU处在了空闲状态,浪费了资源。异步就不一样了,他会允许等待操作完成的同时继续执行其他任务。程序可以发起一个请求,然后在请求的同时做其他操作,不用等待网络请求完成。

2025-08-02 15:42:50 1032 3

原创 【C/C++】经典内存池的设计与实现

本次经典内存池的结构较为简单,只支持单线程,在多线程情景下会发生很多意想不到的错误。不过后续作者会对其进行升级。本次线程池能申请到的最大内存数量是256KB,参考了Google的tcmalloc项目。下面我们来讲解下本次内存池的实现方法。你是一个计算机专业的大学生,自己做了一台小小的服务器并将其放在你电脑上运行。刚开始的时候没啥问题,但跑了十天半个月后你发现你的服务器发生了一些莫名其妙的问题(包括但不限于卡顿,闪退,无缘无故重启,内存分明够用但却申请不出来),这种情况还请不要怀疑,就是内存出问题了。

2025-07-25 11:02:50 1051 1

原创 【C/C++】线程池的设计与实现

再服务器的操作系统中,线程是非常珍贵的资源。但是线程的创建和销毁是很消耗资源的,甚至在一些条件下,使用线程的效率还不如不用线程。为了解决这个问题,线程池就产生了。线程池就是指预先创造一组线程的机制,这些预先创建的线程在程序启动的时候就已经准备好,等待执行任务。当有新任务需要执行的时候,线程池会从中分配一个空闲的线程来执行任务,而不是每次都要重新创建和销毁线程。

2025-07-17 13:50:59 762

原创 【C/C++】五层时间轮的设计与实现

网络程序需要处理的一种事件就是定时事件,比如定期检测一个客户端的连接活动状态。服务器程序通常需要管理多个定时任务,因此有效地组织这些定时事件,使之能在预期的时间内被触发且不影响服务器的主要实现,对于服务器的性能有着很重要的影响,为此我们要将每个定时任务封装成定时器。封装定时器可以使用很多数据结构,链表,排序链表,红黑树,堆,时间轮都可以。本文主要是讲述一个较为高效的定时器容器——时间轮。

2025-07-11 19:10:10 580

空空如也

空空如也

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

TA关注的人

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