自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IO多路复用之select poll epoll

为什么用IO多路复用?假设用一个线程对应一个客户端,一个线程8M,假设有1万个线程,有8G,消耗内存,且性能不高。所以我们用一个线程来完成多个客户端的连接,因此使用IO多路复用。

2024-05-02 11:30:00 1167 1

原创 网络连接的过程

协议族决定了socket的地址类型,在通信中必须采用对应的地址,如AF_INET决定了要用ipv4地址(32位的)与端口号(16位的)的组合、AF_UNIX决定了要用一个绝对路径名作为地址。内核为每个由服务器进程接受的客户连接创建了一个已连接socket描述字,当服务器完成了对某个客户的服务,相应的已连接socket描述字就被关闭。SOCK_STREAM式套接字的通信双方均需要具有地址,其中服务器端的地址需要明确指定,ipv4的指定方法是使用 struct sockaddr_in类型的变量。

2024-05-01 13:54:10 781

原创 并发锁与线程池(三)

线程池是一种用于管理线程的并发机制,它允许程序重复使用一组已创建的线程,而不是为每个任务创建和销毁单独的线程。线程池通过减少线程创建和销毁的开销来提高性能,特别是在处理大量短生命周期的任务时。线程池管理器:负责创建、管理线程池中的线程,并分配任务给线程。工作线程:线程池中的线程,它们等待任务并被分配任务来执行。任务队列:存放待处理的任务。线程池管理器会从任务队列中取出任务分配给工作线程。线程池的工作流程通常如下:当一个任务到达时,线程池管理器检查是否有空闲的线程可以处理该任务。

2024-03-30 10:26:40 322

原创 并发锁与线程池(二)

并发锁与线程池(二)

2024-03-29 19:11:39 461 1

原创 并发锁与线程池(一)

它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在多核或多CPU系统中,线程可以被调度到不同的核心上执行,从而实现真正的。而在单核系统中,线程通过时间分片(time slicing)的方式进行并发执行,操作系统会快速地在,给人一种同时执行的错觉。

2024-03-27 19:09:20 1489

原创 Linux C 编程实现通讯录

每一层都有其明确的职责,使得代码更易于理解和修改。当需要对某一层进行修改或优化时,可以专注于该层,而不必担心影响到其他层的代码。load_file()`:负责将联系人信息保存到文件和从文件中加载联系人信息。在写代码前,构建其代码层次, 使代码具有模块化。:解析文件中的字符串,提取联系人的姓名和电话。至于为什么使用宏可以看这篇文章。数据层中的save_file()

2024-03-26 21:54:01 264

原创 为什么使用宏

但是,如果你发现这个计算非常频繁,而且这个函数非常简单,你可能会想:“每次调用函数都有一定的开销,如果能够避免这个开销就好了。当你编译程序时,预处理器会看到 AREA(10, 20) 这样的宏调用,并将其替换为 (10 * 20)。这样,编译器最终看到的代码是。假设你在写一个程序,需要多次计算一个长方形的长和宽的乘积(面积)。

2024-03-20 21:00:53 207

原创 状态机实现单词统计

当我们在统计单词的时候,由两部分组成。(表示不属于单词的范畴),另一部分为。(表示属于单词的范畴)。我们通常所说的状态机是。

2024-03-20 18:49:40 1660 1

空空如也

空空如也

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

TA关注的人

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