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

织梦可以做论坛网站吗湖南网站备案要多少天

织梦可以做论坛网站吗,湖南网站备案要多少天,自己建设网站需要哪些,试描述一下网站建设的基本流程目录 精简版注释#xff1a; //线程安全的队列容器#xff08;精简版#xff09; 最简易可行的线程池#xff08;精简版#xff09; 详细版注释#xff1a; //线程安全的队列容器#xff08;详细版#xff09; 最简易可行的线程池#xff08;详细版#xff0…目录 精简版注释 //线程安全的队列容器精简版   最简易可行的线程池精简版 详细版注释 //线程安全的队列容器详细版  最简易可行的线程池详细版 ThreadRAII.h 参考《C并发编程实战 第二版》Anthony Willams著 吴天明 译 在学习完这本书后想要提高一下编码能力。 可以先参考精简版的注释尝试写一写代码感觉有难度的话就参考详细版。 具体代码和个人遇到的一些问题可以参考我的下一篇博客。 精简版注释 //线程安全的队列容器精简版   //实现线程安全的队列容器通过封装一个queue //成员变量 //      1.通过mutex互斥对pop、push操作加锁从而实现“安全” //      2.内部封装的queuequeue容器内部存储share_ptr数据通过share_ptr间接存储好处: //              将每个数据的share_ptr初始化放在push()中wait_and_pop就算异常安全的 //              对share_ptr实例分配内存的操作可以脱离锁的保护有利于增强性能 //      3.条件变量等待条件成立pop之前必须先push //成员函数 //      1.构造函数 //      2.push //      3.pop 通过函数参数传递要pop的数据 //              两种poptry_pop立即返回即使队列为空通过返回值表示操作失败 //              wait_and_pop 一直等到有数据才pop //      4.通过返回值传递要pop的数据 //      5.empty //   最简易可行的线程池精简版 //成员变量 //      1.监控异常的原子变量 //      2.线程安全的工作队列 //      3.工作线程 //      4.封装好的能够join线程的线程类 //      5.work_thread() 当线程池能正常工作时就一直循环执行任务 //公有成员 //      1.构造函数 //      thread_pool():将监控异常的原子变量设置为false //              join_threads用工作线程vector初始化 //      { //      } //      2.析构函数 //      { //       将原子变量设置为true避免线程池销毁后工作线程还在循环申请任务 //      } //      3.提交线程函数函数模板 //      { //              把待处理的任务函数提交给任务队列 //      } // 详细版注释 //线程安全的队列容器详细版  //实现线程安全的队列容器通过封装一个queue //成员变量 // 1.通过mutex互斥对pop、push操作加锁从而实现“安全” // 2.内部封装的queuequeue容器内部存储share_ptr数据通过share_ptr间接存储好处: // 将每个数据的share_ptr初始化放在push()中wait_and_pop就算异常安全的 // 对share_ptr实例分配内存的操作可以脱离锁的保护有利于增强性能 // 3.条件变量等待条件成立pop之前必须先push //成员函数 // 1.构造函数 // 2.push{1.为数据创建share_ptr指针 //通过move移动操作降低开销2.互斥上锁3.队列push数据4.条件变量通知有数据} // 3.pop 通过函数参数传递要pop的数据 // bool try_pop(T value) //立即返回即使队列为空通过返回值表示操作失败{ //pop操作都是要操作队列的所以一开始就要上锁没有操作能提取到互斥之外1.互斥上锁2.判断是否为空队列 if(空) return false;else(不空) {1.队头数据传给value //通过move移动操作降低开销2.队列pop3.return true;}} // void wait_and_pop(T value) //一直等到有数据才pop{ //pop操作都是要操作队列的所以一开始就要上锁没有操作能提取到互斥之外1.互斥上锁2.通过条件变量等待条件发生通过lambda表达式保证即使被条件变量唤醒了也要保证队列非空才能进行pop操作3.对头数据传给value;4.队列pop } // 4.通过返回值传递要pop的数据:std::shared_ptrT try_pop(){ //pop操作都是要操作队列的所以一开始就要上锁没有操作能提取到互斥之外1.互斥上锁2.判断是否为空队列 if空 return nullptr;else(不空){1.临时变量取得队头数据2.队列pop3.return 临时变量}}std::shared_ptrT wait_and_pop(){ //pop操作都是要操作队列的所以一开始就要上锁没有操作能提取到互斥之外1.互斥上锁2.通过条件等待条件发生通过lambda表达式保证即使被条件变量唤醒了也要保证队列非空才能进行pop操作3.临时变量取得对头数据4.队列pop5.return 临时变量} // 5. bool empty() const{ //函数声明为const 要求将mutex 声明为mutable1.互斥上锁2.返回 封装队列的empty();} //最简易可行的线程池详细版 #ifndef _THREAD_POOL_EASY_HPP_ #define _THREAD_POOL_EASY_HPP_ #include ThreadRAII //join_threads #include threadsafe_queue // //最简单的线程池::工作线程数目固定当有任务要处理时就把他放进任务队列 //所以需要一个任务队列用threadsafe_queue来实现 //各线程从任务队列中领取任务 //工作线程存储在vector容器中并被引用到join_threads中进行统一的析构管理 // //私有成员 // 1.线程的启动可能抛出异常所以需要一个原子变量进行标识 // 当该变量false时线程池正常工作 // 每当有异常抛出时设置为true // 线程池析构时也设置为true // 保证线程池析构后工作线程不会继续循环尝试从工作队列中获取任务 // 2.线程安全的工作队列 // 3.使用vector容器存放工作线程 // 4.封装好的能够join线程的线程类join_threads 里面存的是工作线程vector的整个引用 // 5.work_thread() 当线程池能正常工作时就一直循环执行任务 // { // while(线程池正常工作) // { // 临时变量用来接收任务 // if(工作队列能pop出任务) // 执行任务 // else // 将cpu时间让给其他线程 // } // } //公有成员 // 1.构造函数 // thread_pool():将监控异常的原子变量设置为false // join_threads用工作线程vector初始化 // { // 通过std::thread::hardware_concurrency()取得最大线程数 // try // { //线程启动可能抛出异常所以用try catch包住 // for(最大线程数) // { // 工作线程放到存放工作线程的vector里 // } // } // catch(...){ // 出现异常将原子变量设置为true // throw; // } // } // 2.析构函数 // { // 将原子变量设置为true避免线程池销毁后工作线程还在循环申请任务 // } // 3.提交线程函数函数模板 // { // 把待处理的任务函数提交给任务队列 // } //#endif ThreadRAII.h 还需要封装thread类使std::thread对象在所有路径皆不可联结详细请参考本书第八章或effective modren C 条款37 #ifndef _THREADRAII_H_ #define _THREADRAII_H_//通过封装thread类使std::thread对象在所有路径皆不可联结 // 详细参见 effective modren C 条款37 #include vector #include thread class join_threads {private:std::vectorstd::thread threads;public:explicit join_threads(std::vectorstd::thread threads_):threads(threads_) {}~join_threads(){for(unsigned long i 0; ithreads.size(); i){if(threads[i].joinable()){threads[i].join();}else{threads[i].detach();}}} }; #endif
http://www.hkea.cn/news/14300870/

相关文章:

  • php怎么做视频网站西安在线网站
  • 徐闻住房与城乡建设局网站上海简约网站建设公司
  • 建立门户网站的费用做网站阜新
  • 使用arcgis进行网站开发建设网站企业公司
  • 岳西县住房和城乡建设局网站网页设计与制作实训报告结果
  • 手机建站平台淘客wordpress open sans
  • 辽源市网站建设朝阳凌源网站建设
  • 福州网站建设资讯上海软件网站建设
  • 长沙营销型网站建设费用如何在国外网站开发新客人
  • 用人名做网站域名房产cms系统
  • 工程网站开发上海闵行是郊区吗
  • 网站开发市场成本wordpress 登录接口
  • 优秀平面设计网站wap网站源码下载
  • 网站建设 嘉定上海网站设计联系方式
  • 农业网站建设公司虚拟机做的网站怎么让外网访问
  • 我想做网站怎么做昆山网站开发项目私活
  • 公司理念网站中山移动网站建设怎么做
  • 广州做网站一般要多少钱?小程序搭建赚钱吗
  • vue 实现网站开发网站流量利用
  • 自助网站建设哪家优惠wix怎么做网站教程
  • 南昌网站建设和推广wordpress 点击按钮没反应
  • 简单网页制作成品和代码seo搜索引擎优化什么意思
  • 中山网站建设电话php 开源 建站
  • 无锡网站建设唯唯网络医院网站
  • 房产网站建设方案论文官方网站开发与定制
  • 国外有名的设计网站公司名称大全集最新3个字
  • 培训行业网站建设的重要性已有网站 需要整改 怎么做
  • 安阳网站建设方案可信网站是什么
  • 网站集约建设报告河南省建筑一体化平台
  • 如何做公司网站百度推广郑州网站制作价格