线程池,内存池,连接池,对象池,请求池......

 

池都是起到一个缓冲的作用,不需要从操作系统中重新申请。不需要每次都创建线程,每次用线程的时候,从线程池里面写出一个,避免创建与销毁。

资料来源于一下:

https://www.bilibili.com/video/BV1vk4y1R7Yi?from=search&seid=17897966025994815869

https://github.com/wangbojing/threadpool/blob/master/thread_pool_simple.c

线程池

线程池的应用

Io处理的时候

日志处理的时候

设计到池,有什么设计模式,单例模式

线程池的组成

1.执行队列,线程

2.任务队列,任务

3.管理组件

线程池代码

感觉最重要是一开始把结构给定义好,

typedef struct NWORKER {
	pthread_t thread;
	int terminate;
	struct NWORKQUEUE *workqueue;
	struct NWORKER *prev;
	struct NWORKER *next;
} nWorker;

typedef struct NJOB {
	void (*job_function)(struct NJOB *job);
	void *user_data;
	struct NJOB *prev;
	struct NJOB *next;
} nJob;

typedef struct NWORKQUEUE {
	struct NWORKER *workers;
	struct NJOB *waiting_jobs;
	pthread_mutex_t jobs_mtx;//关于条件变量的谈论 https://blog.csdn.net/shichao1470/article/details/89856443
	pthread_cond_t jobs_cond;
} nWorkQueue;

typedef nWorkQueue nThreadPool;

 

内存池(和伙伴系统类似)

减少了系统调用,提高了应用程序性能 read,write,recv,connect,send。ZeroMQ做批量式得处理

怎么保证申请和释放内存得时候是线程安全的呢?tcmalloc不是通过加锁的方式。

最好的并发方式是不共享资源,如果需要共享,则通过通信解决。

zero_copy  

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值