多线程、线程池实现方式整理

  最近有感而发,工作中用到的各种环境的多线程解决方案多之又多,再此先进行一些简单的整理以备不时之需。如果有不当之处敬请指正。

   各种环境下的线程实现方法

  1. CreateThread Win32提供的创建线程API
  2. mfc下提供的CWinThread类,和AfxBeginThread等等函数
  3. QT中的QThread
  4. Linux中Fork、exec簇函数、pthread库等。
  5. boost::thread 即std::thread

  在此就不展开篇幅一 一整理每种线程的用法了。 就简单的贴一些曾经看过的感觉比较有用的网址做一下备忘。
  临界区、互斥量、信号量、事件的区别。
  linux多线程
  QThread的用法
  Qt同步线程
  c++11的std::thread同boost::thread

  线程池,简单来说就是有一堆已经创建好的线程(最大数目一定),初始时他们都处于空闲状态,当有新的任务进来,从线程池中取出一个空闲的线程处理任务,然后当任务处理完成之后,该线程被重新放回到线程池中,供其他的任务使用,当线程池中的线程都在处理任务时,就没有空闲线程供使用,此时,若有新的任务产生,只能等待线程池中有线程结束任务空闲才能执行。
  不管使用任何线程创建方式,只要理解线程池的应用原来,都可以通过合理的设计实现线程池。但是实现的复杂程度则差异巨大。此处介绍几种使用boost来实现线程池的简单方法。
1、基于boost::threadpool实现线程池
2、基于boost::thread_group 实现线程池
3、直接基于io_context_pool来实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值