当前位置: 首页 > news >正文

网站建设玖金手指排名11专业建站公司建站系统

网站建设玖金手指排名11,专业建站公司建站系统,深圳品牌建网站,wordpress 图书主题1、介绍 1.1 线程池应用场景 在进行创建线程任务时#xff0c;如果需要频繁的创建线程、销毁线程#xff0c;这样会极大地降低效率#xff0c;因为创建线程也是需要时间的#xff0c;一个完整的线程处理运行时间包括#xff1a;线程的创建时间、线程运作时间、线程的销毁…1、介绍 1.1 线程池应用场景 在进行创建线程任务时如果需要频繁的创建线程、销毁线程这样会极大地降低效率因为创建线程也是需要时间的一个完整的线程处理运行时间包括线程的创建时间、线程运作时间、线程的销毁时间。 对于频繁创建线程的业务场景我们可以预先创建多个线程在创建多线程任务时我们可以直接将线程函数添加到预先创建的线程中这样就可以避免多次创建线程的时间提高代码运行效率。 1.2 线程池设计的思路 设计多线程主要实现的功能有1预设创建线程的数量。2存储运行一定数量线程任务容器workerThread变量可以是vector或其他容器元素类型是std::thread该容器一直检测任务队列变量中是否有待执行的任务有则取出执行没有则等待。3用于存储运行任务的变量Task数据类型是queue数据类型是std::functionT,该变量主要用于存储待运行线程函数func。 线程池理论可以参考链接如下 深入解析C编程中线程池的使用_c线程池用法_歌行梅村的博客-CSDN博客 1.3 线程池设计注意事项 所需理论知识 创建具有适配所有线程函数的任务队列Task创建这样的任务队列需要有一定的C基础可能需要如下知识点 可变参数模板template class... Args_我在这里啊的博客-CSDN博客 C多线程之旅-future等待事件_或许 没有的博客-CSDN博客 C中函数对象模板functionT、通用函数适配器std::bind和lambda_cfunction头文件_夜雨听萧瑟的博客-CSDN博客 C多线程中共享变量同步问题_夜雨听萧瑟的博客-CSDN博客 1.4 预设的线程数量是多少 预设的线程数量不是说越多越好而是创建适当数量的线程数让CPU的利用率达到最大。如果预设的线程数量过大PC的核数有限这样同时只会有一小部分任务在同步运行这样操作系统就需要不断的切换上下文频繁的切换上下文也需要时间这样反而会降低运行效率。 经验值 主要有下面几种 1 设置线程数量的一般经验值为2NN是CPU核数 2  2N1N是CPU核数 3  N1N是CPU核数 具体设置数量可以在设置后对其不同数量线程数运行效率进行简单的测试。 具体分析 可参考链接 线程池创建线程数量讨论_夜雨听萧瑟的博客-CSDN博客 2、简单demo 1该demo的中心思想是创建10个运行的线程函数的容器workerThread该线程不断检测任务队列中是否有待处理任务有待处理任务则取出执行任务。2创建一个管理任务队列数量容器Task用户可以向其添加任务。 threadpoolm.h文件如下: #pragma once #include mutex #include condition_variable #include thread #include vector #include queue #include functionalclass threadPoolM {public:using funcType std::functionvoid();threadPoolM();~threadPoolM();void setThreadNum(int num);void AddTask(const funcType pf); private:void StartWork();void RunTask();int m_num;std::vectorstd::threadworkerThread;std::mutex mut;std::condition_variable cond;std::queuefuncType Task; };threadpoolm.cpp文件如下 #include threadpoolm.h #include iostream threadPoolM::threadPoolM() {}threadPoolM::~threadPoolM() {for(int i 0; i workerThread.size(); i){workerThread.at(i).join();} }void threadPoolM::setThreadNum(int num) {m_num num;StartWork(); }void threadPoolM::AddTask(const threadPoolM::funcType pf) {std::unique_lockstd::mutexlk(mut);cond.wait(lk,[this]{return Task.size() 10;});Task.push(pf);std::cout id std::this_thread::get_id() , add a task, size is Task.size() std::endl;cond.notify_one();}void threadPoolM::StartWork() {for(int i 0; i m_num; i){workerThread.push_back(std::thread(threadPoolM::RunTask,this));} }void threadPoolM::RunTask() {while (true) {std::unique_lockstd::mutexlk(mut);cond.wait(lk,[this]{return Task.size()0;});auto Ta std::move(Task.front());Task.pop();Ta();std::cout id std::this_thread::get_id() , run a task,size Task.size() std::endl;cond.notify_one();} }上面线程池类的使用main.cpp如下 #include iostream #include threadpoolm.h int cnt 0;void printId(int id) {std::cout id std::this_thread::get_id() , id id std::endl; } int main() {std::cout Hello World! std::endl;threadPoolM pool;pool.setThreadNum(10);while(true){if(cnt 2000){cnt 0;}std::cout cnt cnt std::endl;auto f1 std::bind(printId,cnt);pool.AddTask(f1); std::this_thread::sleep_for(std::chrono::milliseconds(100));//主线程中的while循环只是对实际添加任务消息进行模拟故没有退出while条件。}return 0; //由于线程池中的RunTask函数存在while循环没有退出条件所以该行代码不会执行。可以按照实际条件对其while条件修改。 }运行结果如下 上面的代码参考于 c11最简单的线程池实现_c实现线程池_osDetach的博客-CSDN博客 线程池的实现代码也可参考下面链接 基于c11的100行实现简单线程池_c11 100行实现线程池 csdn_6plus的博客-CSDN博客 附加知识  怎样理解线程的睡眠挂起和阻塞 - 知乎 (zhihu.com) “阻塞pend”与“挂起suspend”的区别_pend group run cpu调度_zhch152的博客-CSDN博客
http://www.w-s-a.com/news/874845/

相关文章:

  • 全球排名前十网站百度网站官网网址
  • 商家在携程旅游网站怎样做宣传做网站公司苏州
  • 芜湖做网站都有哪些广州音乐制作公司
  • 青岛好的网站制作推广注册公司流程步骤
  • 怎么制作营销网站模板wordpress苗木模板
  • 手机网站样例wordpress 排序
  • 济南网站建设手机网站开发人员需要去做原型吗
  • 动易网站模板下载微信支付 wordpress
  • 学校建设外文网站情况阿里云 建设网站怎么样
  • 网站建设与网页设计制作深圳网站建设首选上榜网络
  • 网站浏览成交指标计算机应用是做什么的
  • 企业网站建设的要求wordpress 404页面模板
  • 公司怎么注册官方网站wordpress花园网站
  • 一般网站的建设步骤有哪些企业网站建设应该注意什么事项问题
  • 枣庄市建设局网站建设工程合同交底的内容包括
  • 全国十大跨境电商排名seo优化入门教程
  • 福安网站开发网站内容建设要求age06
  • 网站开发制作公司罗湖在线
  • 做网站银川潍坊网络科技有限公司
  • 南宁企业网站建站模板盐田高端网站建设
  • 深圳市建设局网站张局北京档案馆网站建设
  • 运动健身型网站开发网站备案掉了什么原因
  • 网站开发的前后端是什么注册网站多少钱一年
  • 彩票网站建设需要什么网站未备案被阻断怎么做
  • wordpress 版权声明网站优化排名哪家性价比高
  • dedecms网站关键词外包做网站平台 一分钟
  • 酒网站建设游戏分类网站怎么做
  • 仿牌网站安全北京大良网站建设
  • ps中怎样做网站轮播图片吉林省网站建设公司
  • 广西网站建设-好发信息网温江做网站哪家好