C++11创建一个跨平台线程池

本文介绍了作者根据《深入应用C++11》实现的一个C++11线程池,并在Windows(VS2015)和Linux(g++5.4.0)环境下进行构建、编译和调试的过程。线程池实现涉及生产者-消费者模式,包括同步服务层、排队层和异步服务层。在Windows环境下,详细说明了工程创建和测试步骤;在Linux环境下,解决了缺少c++11支持和pthread库的问题。
摘要由CSDN通过智能技术生成

    看完《Windows核心编程》的“线程池”这一章后,仅仅是学到了几个Windows线程池相关的API的,并没有触及到线程池是如何实现的这个层次,总感觉意犹未尽,特别手痒,想要自己实现一个简单的线程池。偶然的,想起了之前买的祁宇老师的《深入应用C++11》中,有一章介绍“使用C++11实现一个线程池”,于是按照原书敲了一顿代码,在VS下顺利运行起来了,兴奋不已。然后,再深入一想,既然是纯C++实现的线程池,那么放到Linux下,也是可以运行的,于是又动手在Linux下折腾了一番,今日终于也运行起来了,特此记录,分享整个折腾过程。


一、线程池

    本文主要介绍我在VS2015和Linux g++5.4.0下构建工程、编译和调试的过程,线程池的实现原理和代码解析,大家可以直接去看祁宇老师的书。但是,为免得突兀,我还是摘抄一部分原理如下:

    一个完整的线程池包括三层:同步服务层、排队层和异步服务层,其实这也是一种生产者-消费者模式,同步层是生产者,不断将新任务丢到排队层中,因此,线程池需要提供一个添加新任务的接口供生产者使用;消费者是异步层,具体是有线程池中预先创建的线程去处理排队层中的任务。排队层是一个同步队列,它内部保证了上下两层对共享数据的安全访问,同时还要保证队列不会被无限制地添加任务导致内存暴涨。另外,线程池还要提供一个停止接口,让用户能够在需要的时候停止线程池的运行。


二、Windows平台运行

1,环境

1)硬件

    通过cmd->systeminfo可以查看CPU信息

    Intel64 Family 6Model 58 Stepping 9 GenuineIntel ~3201

    它是一个四核处理器(通过process explorer -> system informatio

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值