- 博客(5)
- 收藏
- 关注
原创 C/C++线程池类封装(核心与非核心线程-面向对象方法) 学习记录
C/C++ 线程池类封装(核心线程与非核心线程-面向对象方法) 一. 所作优化 前面关于线程池的封装一帖,仅仅是将指定工作线程创建后就保持阻塞等待任务,相对来说比较简单。现在对线程池来进行一些优化: 设置核心线程(最小线程) 非核心线程超时等待自动销毁 给任务队列配置了互斥锁(保证多个线程在竞争任务队列时同步) 根据以上优化,那么工作线程就没必要一次性全部创建。在任务量少时仅需要维持核心线程运作就能够处理已有任务量; 当任务量所需要运作的线程大于核心线程数,那么视任务情况逐个撞见非核心线程来处理任务,并
2021-10-10 23:18:39 579 2
原创 Linux 服务端socket类封装
Linux 服务器中socket的封装(面向对象方法)-学习记录 一、 进程间的通信方式: 本地: 管道(PIPE)、命名管道(FIFO)、消息队列、共享内存、信号量 本地/网络: 套接字 其中套接字不仅可以单机的不同进程通信, 也可以实现跨网不同进程通信,且其可以明确的将客户端与服务端区分开来,实现多个客户端连接到同一个服务器上。 (以上书写进程间的通信方式仅仅框在我所了解的范围内,还有其他的通信方式以及详细描述请跳转参考博客) 二、 三元组标识网络的进程 我们知道本地可以用进程ID来标识一个进程,而在网
2021-10-10 00:03:06 405 2
原创 makefile多.cpp文件编译 (学习记录-makefile)
Linux makefile多个.cpp文件编译 因为目前所做服务器是再Linux ubuntu16的环境下开发,且工程涉及多个.cpp文件,那么单纯用g++就无法实现工程的编译,所以需要用到makefile来实现多文件编译,在这里对makefile的使用做个简单的记录 一、makefile的作用 一个定义了一系列编译规则的文档,记录原始代码如何编译的详细信息.makefile写好后通过make命令即可对工程进行编译; 二、 工程makefile脚本源码 .PHONY: run clean run:g
2021-10-09 15:37:11 1742 5
原创 Linux C/C++ 共享内存配合消息队列与信号量的封装
Linux‘ C/C++ 共享内存配合消息队列+信号量下的封装 一、思路 我所做的服务端demo中分为前置与后置两个服务器,前置做接收信息、发包与解包等处理,后置则包业务的处理,前后置分为两个进程运行,那么彼此要接收到互相发送的信息必然少不了Linux下进程间的通信,而我对共享内存的主要封装思路如下: 现有共享内存A端与B端,两者为同一个共享内存,一个写一个读 创建一个信号量,来实现可读资源与可写资源的P V操作,充当共享内存读写中的缓冲机制 创建一个消息队列, A端共享内存写入后,则往该消息队列发送消
2021-10-09 13:45:06 1219 8
原创 C/C++ 线程池的简单封装
**C/C++ 线程池的简单封装 最近在搭建一个服务器,打算把线程池应用进去,根据老师课上所讲和网上前辈们提供的资料对线程池有了以下总结:** 一、线程的创建需要内存资源,线程的创建和销毁需要时间资源 二、线程池作用: 如果项目需要频繁的创建线程来处理任务,那么CPU资源会在线程创建和销毁上浪费许多,所以我们可以先把一定量的线程先创建好并且让它们在没任务的情况下陷入睡眠,有任务时再被唤醒来处理任务; 三、线程池组成部分: (1) 线程池管理器: 对线程进行创建与管理 (2) 工作线程: 线程池中的线程 (3
2021-10-08 22:59:07 354 8
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人