手把手写 Linux 线程池

在 Linux 系统中,每创建一个线程系统默认会分配 8M 的线程栈。如果在实际使用中每处理一个任务就创建一个线程,处理完后又取消线程。服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。线程池主要用来解决线程生命周期开销问题和资源不足问题。通过对多个任务重复使用线程,线程创建的开销就被分摊到了多个任务上了,应用程序响应会更快。

本场 Chat 首先会介绍 C 语言相关的一些应用技巧,然后针对线程间的同步互斥、条件变量等做详细的描述,然后深入浅出的阐述线程池的原理及其构造方法。

线程池将实现以下功能:

  1. 一个进程中的线程就好比是一家公司里的员工,员工的数目应该根据公司的业务多少来定,太少了忙不过来,但是太多了也浪费资源。
  2. 最理想的情况是让进程有一些初始数目的线程,当没有任务的时候这些线程自动进入睡眠,有了任务他们会立即执行任务,不断循环。
  3. 单任务超时设置。
  4. 进程还应该可以根据自身任务的繁重与否来增删线程的数目。
  5. 当所有的任务都完成了之后,所有的线程还能妥当地收官走人。
  6. 多个线程池(部门)能协同工作。
  7. 用户可进行批任务投递。

本场 Chat 您将学到如下内容:

  1. 可扩展化模块编程技巧。
  2. 多线程编程、控制、同步互斥的常见使用方法。
  3. 线程池的工作原理是什么。
  4. 如何构思线程池的框架。
  5. 从零编写通用线程池。

阅读全文: http://gitbook.cn/gitchat/activity/5c31e790a4078563ee857425

一场场看太麻烦?成为 GitChat 会员,畅享 1000+ 场 Chat !点击查看

猜你喜欢

转载自blog.csdn.net/valada/article/details/86107097