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

模拟网站开发wordpress收费资源下载

模拟网站开发,wordpress收费资源下载,河南企业网络推广方法,杭州网站建设设计公司一、线程池的启动 #xff08;主线程#xff09; // 启动线程池 #xff08;主线程#xff09; void threadPoolRun(struct ThreadPool* pool) {/*线程池被创建出来之后#xff0c;接下来就需要让线程池运行起来#xff0c;其实就是让线程池里的若干个子线程运行起来*//… 一、线程池的启动 主线程 // 启动线程池 主线程 void threadPoolRun(struct ThreadPool* pool) {/*线程池被创建出来之后接下来就需要让线程池运行起来其实就是让线程池里的若干个子线程运行起来*/// 确保线程池未运行 assert(pool !pool-isStart);// 比较主线程的ID和当前线程ID是否相等 // 相等确保执行线程为主线程不相等exit(0)if(pool-mainLoop-threadID ! pthread_self()) {exit(0);}pool-isStart true; // 标记为启动if(pool-threadNum 0) { // 线程数量大于零for(int i0;ipool-threadNum;i) {workerThreadInit(pool-workerThreads[i], i);// 初始化子线程workerThreadRun(pool-workerThreads[i]); // 启动子线程}} }## 学习笔记线程池的运行机制 线程池被创建后需要启动使其子线程运行。启动线程池的函数需要一个有效struct ThreadPool*类型指针pool作为参数和threadNum代表子线程总个数 // 初始化线程池 struct ThreadPool* threadPoolInit(struct EventLoop* mainLoop, int threadNum); 确保线程池未运行且执行线程为主线程 // 确保线程池未运行 assert(pool !pool-isStart); // 比较主线程的ID和当前线程ID是否相等 // 相等确保执行线程为主线程不相等exit(0) if(pool-mainLoop-threadID ! pthread_self()) {exit(0); } 如果条件满足将线程池标记为已启动并初始化并启动子线程如果线程数量大于零通过WorkerThread模块的workerThreadInit函数进行初始化通过WorkerThread模块的workerThreadRun函数进行启动如果线程数量为零线程池可以提供主线程的反应堆模型(mainLoop) pool-isStart true; // 标记为启动 if(pool-threadNum 0) { // 线程数量大于零for(int i0;ipool-threadNum;i) {workerThreadInit(pool-workerThreads[i], i);// 初始化子线程workerThreadRun(pool-workerThreads[i]); // 启动子线程} } ### 知识点线程池的启动 启动线程池的函数需要确保传入的结构体指针有效且线程池未运行执行线程需要判断是否为主线程避免异常情况成功启动后需要初始化并启动子线程通过WorkerThread模块的函数进行初始化和启动如果线程数量为零线程池可以提供主线程的反应堆模型(mainLoop)  二、从线程池中取出一个反应堆实例 主线程 此外takeWorkerEventLoop函数 主线程可以从线程池中取出某个子线程的反应堆实例。 目的这个函数是主线程调用的因为主线程是拥有线程池的。因此主线程可以遍历线程池里边的子线程从中挑选一个子线程得到它的反应堆模型再将处理的任务放到反应堆模型里边。 // 取出线程池中的某个子线程的反应堆实例 struct EventLoop* takeWorkerEventLoop(struct ThreadPool* pool) {assert(pool-isStart);// 确保线程池是运行的// 比较主线程的ID和当前线程ID是否相等 // 相等确保执行线程为主线程不相等exit(0)if(pool-mainLoop-threadID ! pthread_self()) {exit(0);}// 从线程池中找到一个子线程然后取出里边的反应堆实例struct EventLoop* evLoop pool-mainLoop; if(pool-threadNum 0) {evLoop pool-workerThreads[pool-index].evLoop;pool-index pool-index % pool-threadNum;}return evLoop; } 如果线程数量为零evLoop 为主线程的反应堆模型(mainLoop)即 evLooppool-mainLoop; 如果线程数量大于零从线程池中的某个子线程获取其事件循环并将其存储在evLoop变量中。为了对线程池中的工作线程实现雨露均沾故需要用到index这个变量为了确保 pool-index  的值在合适的取值范围内并且不会超出它的取值范围先将 pool-index  的值加一然后对 pool-threadNum取余数并将结果赋值给 pool-index  ① pool-index;② pool-index % pool-threadNum; ③ pool-index pool-index % pool-threadNum; if(pool-threadNum 0) {evLoop pool-workerThreads[pool-index].evLoop;pool-index pool-index % pool-threadNum; } ### 知识点子线程的反应堆实例的取出 可以通过takeWorkerEventLoop函数从线程池中取出子线程的反应堆实例这个函数的核心是取出反应堆实例用于处理任务如果线程数量为零evLoop 为主线程的反应堆模型(mainLoop)对线程池中的工作线程实现雨露均沾地分配各个子线程调度避免所有任务都由同一个线程处理还确保index在合适的取值范围 总结: 本文主要讲述了线程池的启动过程和操作函数。在启动线程池时需要传入有效指针确保线程池未被运行并判断执行线程的线程是否为主线程。通过WorkerThread模块中的函数对子线程进行初始化并启动。主线程可以方便地管理子线程并从中选择一个子线程以获取其反应堆模型。 此外还讲述了线程池操作的函数包括初始化、启动和取出子线程等。整个处理流程需要确保每个任务都能被雨露均沾地分配给各个子线程避免所有任务都由同一个线程处理还确保了index在合适的取值范围。 线程池总结 // 初始化线程池 struct ThreadPool* threadPoolInit(struct EventLoop* mainLoop, int threadNum);// 启动线程池 void threadPoolRun(struct ThreadPool* pool);// 取出线程池中的某个子线程的反应堆实例 struct EventLoop* takeWorkerEventLoop(struct ThreadPool* pool); threadPoolInit函数、threadPoolRun函数、takeWorkerEventLoop函数都需要在主线程里边进行依次调用。首先调用threadPoolInit函数得到pool实例之后调用threadPoolRun函数启动线程池意味着里边的子线程会启动。接着调用takeWorkerEventLoop函数取出线程池中的某个子线程的反应堆实例再把这个实例给到调用者调用者就可以通过这个实例往它的任务队列里边添加任务这个任务添加到evLoop的任务队列里边去了之后就开始处理任务队列。然后再根据任务队列里边的节点类型来处理Dispatcher的检测集合。有三种情况 情况1.往检测集合里边添加新的节点 情况2.从检测集合里边删除一个节点情况3.修改检测集合里边某个文件描述符对应的事件 Dispatcher这个检测集合被处理完之后这个反应堆模型开始进行一个循环它需要循环调用底层的poll/epoll_wait/select函数来检测这个集合里边是否有激活的文件描述符。如果有激活的文件描述符那么就通过这个文件描述符找到它所对应的channel。找到这个channel之后再基于激活的事件调用事件对应的回调函数。这个函数调用完成之后对应的事件也就处理完毕。这就走完了整个的处理流程
http://www.hkea.cn/news/14569671/

相关文章:

  • 网站开速度几秒国家开发投资集团有限公司
  • 湖南营销型网站建设磐石网络关于网站建设要花多少钱
  • 在自己电脑建设网站全网热搜关键词排行榜
  • 网站底部版权代码网站部署环境
  • 浙江均泰建设有限公司网站建筑工程网正保
  • 西安 做网站 499线上设计师接单
  • 初学者学做网站用什么软件湖南建设银行网站
  • 直播教育网站建设做游戏网站多少钱
  • 广告设计网站官网焦作做网站最专业的公司
  • 山东住房和城乡建设厅网站教育中心亿唐网不做网站做品牌案例分析
  • 网站排名软件优化北京建设网站有哪些公司
  • 去哪里找做网站的seo百度点击软件
  • 网站维护运营智能小程序WordPress
  • 长沙装修网站排名网站建设策划模板下载
  • 网站建设推广内容海盐县建设门户网站
  • 自己做的网站怎么调用百度地图杭州设计师网站
  • 洛阳手机网站开发做网站外包公司有哪些
  • 哈尔滨网站建设公司哪家好如何登录到wordpress
  • 宜昌企业网站建设图书拍卖网站开发遇到的问题
  • 网站开发基础教程安康网站建设智能小程序
  • 在线手机网站预览辽宁城乡建设厅网站
  • 建立网站的流程电商之家官网
  • 站长之家psd百度竞价推广课程
  • 做网站费用多少钱各行各业网站建设口碑好
  • 优质高职院校建设网站苏州seo关键词优化排名
  • 淘宝客手机网站苏州网站建设设计公司哪家好
  • 合肥手机网站开发描述个人网站的建站过程
  • 网站交互主要做什么爱战网关键词挖掘查询工具
  • 网站上的动态效果怎么做的2网站建设
  • 旅游门户网站建设区块链媒体网站建设