Linux
文章平均质量分 73
PityPityPity
但行好事,莫问前程
展开
-
[共同学习] 线程池浅见
线程池出现的原因优点应用场景C++实现线程池:一种多线程处理形式,将任务添加到队列,然后创建线程自动启动这些任务。线程池的线程都是后台线程,每个线程使用默认堆栈大小(我在Linux下使用ulimit -s 查询是8M)。出现的原因来一个任务创建一个线程处理,处理完毕销毁线程,在峰值压力下瞬间创建大量线程,消耗大量资源;总体任务处理事件 = 创建线程 + 任务处理 + 销毁线程,资源分配不合理;优点线程池维护多个线程,避免了在处理短时间任务时创建与销毁线程的代价,不仅能保持内核的充分利用,还能防原创 2021-06-22 11:22:51 · 52 阅读 · 0 评论 -
[共同学习] 生产者消费者模型浅见
生产者消费者模型优点应用场景C++实现--以上--生产者消费者模型:通过一个容器解决生产者和消费者的强耦合问题。生产者和消费者之间不直接通讯,而是通过阻塞队列进行通讯,所以生产者生产完数据后不用等待消费者处理,直接给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列中取。阻塞队列相当于一个缓冲区,平衡了生产者和消费者的处理能力。优点解耦合–模块分离,降低功能耦合度;支持忙闲不均–中间缓冲区队列在压力大时缓冲大量数据,慢慢处理;支持并发–支持多对多,前提是中间缓冲区的操作是线程安全的;原创 2021-06-21 16:17:11 · 162 阅读 · 0 评论 -
[共同学习] 进程间通信浅见
进程间通信管道匿名管道命名管道共享内存Linux下共享内存的使用及删除消息队列和信号量消息队列信号量--以上--进程间无法直接进行通信:进程具有独立性,每个进程都有自己的虚拟空间地址,访问的都是自己的虚拟空间地址,因此无法进行直接通信,需要操作系统提供中间媒介进行通信。进程间通信的四种方式:管道,共享内存,消息队列,信号量管道半双工通信(数据可以沿两个方向传送,但同一时刻一个信道只允许单方向传送)。举个栗子,小明可以用吸管喝阔落,也可以用吸管把嘴里的阔落滋出来,但他不能即喝阔落又把阔落滋出来。原创 2021-06-18 21:38:30 · 82 阅读 · 0 评论