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

男男做视频网站app优化是什么意思

男男做视频网站,app优化是什么意思,北京哪家网站建设公司好,软件开发能力本文我们不用定时器。定时器会阻塞消息循环。先看需求#xff1a; 我们先看第一种#xff0c;有一个任务#xff0c;要求每1秒钟执行一次#xff0c;最常见的写法如下两种 bool bExitThread false; DWORD WorkThread1(LPVOID param) {while (false bExitThread){//// to…本文我们不用定时器。定时器会阻塞消息循环。先看需求 我们先看第一种有一个任务要求每1秒钟执行一次最常见的写法如下两种 bool bExitThread false; DWORD WorkThread1(LPVOID param) {while (false bExitThread){//// to-do 这里是执行任务的具体代码//Sleep(1000);}return 0; } 或者如下 HANDLE hEventExit ::CreateEvent(NULL, FALSE, FALSE, _T(hEventExit));DWORD WorkThread1(LPVOID param) {while (false bExitThread){DWORD nRet ::WaitForSingleObject(hEventExit, 1000);if (WAIT_TIMEOUT ! nRet){break;}////to-do 执行任务具体代码//}return 0; } 勉强可以用了但是有明显缺点是当软件要退出时必须等待该线程1秒钟非常不实时。无法完成快速响应退出。很致命啊。 于是有了改进的写法如下两种 DWORD WorkThread2(LPVOID param) {while (false bExitThread){//// to-do 这里是具体代码//for (int i 0; i 100; i){Sleep(10);if (bExitThread)break;}}return 0; }或者如下 HANDLE hEventExit ::CreateEvent(NULL, FALSE, FALSE, _T(hEventExit));DWORD WorkThread1(LPVOID param) {DWORD nCount 0;while (false bExitThread){DWORD nRet ::WaitForSingleObject(hEventExit, 10);if (WAIT_TIMEOUT ! nRet){break;}nCount;if (0 nCount % 100){////to-do 执行任务具体代码//}}return 0; } 不得不说这两种改进方式的确做到了1秒钟执行1次任务也能做到当软件退出时能极快速的退出该线程。不得不说这种化整为零的好方式比前面第一种好了许多甚至你可以直接把睡眠或等待改成1毫秒就可以达到更低时延的快速退出线程。 但是假如需求做一下调整但有多个任务比如3个任务需要执行而且 任务1必须保证每1秒钟要执行一次(耗时忽略不计) 任务2必须保证每2秒钟要执行一次(耗时忽略不计) 任务3必须保证每3秒钟要执行一次(耗时忽略不计) (不准使用定时器N个定时器定时器会导致一顿一顿的也不准开N个定时器再在里面各开1个线程), 我们怎么做到保证N个任务按如上要求执行还要能保证退出时线程能最快的退出。 事实上这才是我们现实需求中最最常见的。这个时候同样也可以用化整为零的多次Sleep或WaitForSingleObject来完成。比如如下巧用nCount计数来完成 HANDLE hEventExit ::CreateEvent(NULL, FALSE, FALSE, _T(hEventExit));DWORD WorkThread3(LPVOID param) {bool bSet false;DWORD nCount 0;while (false bExitThread){DWORD nRet ::WaitForSingleObject(hEventExit, 1);if (WAIT_TIMEOUT ! nRet){break;}nCount;if (0 nCount % 1000){//// to-do Task1//}if (0 nCount % 2000){//// to-do Task2//}if (0 nCount % 3000){//// to-do Task3//}}return 0; } 显然是达到了多个任务都可以按照指定的时间间隔频次执行而且还能做到软件退出时该线程也能快速的退出。 但假如需求再变一下只准开一个线程3个任务需求同上但是每个任务执行耗时不可忽略任务执行耗时1秒却不可中断。这个时候我们如何做到软件退出时最快的退出呢 显然软件正好退出时可能该线程刚好进入任务N执行执行1秒耗时不可中断必然需要等待。 显然这个时候需要做到快速优雅的退出就比较困难了。如果实在不想等待1秒的话我们可以直接PauseThread或TerminateThread来暂停或打断该线程的执行然后退出软件。这也不失是一种快速响应退出线程的好方法了。 虽然可以做到快速退出了但是有一个需求是没有满足的那就是 每隔1秒执行一次Task1每隔2秒执行一次Task2每隔3秒执行一次Task3 为什么呢因为这种方式有个弊端当第2秒时Task1执行耗时1秒它占了1秒导致了Task2往后延了1秒执行当第3秒时Task2Task3依次又顺延了许多秒并没有达到需求。所以这个时候只准开1个线程就很难实时满足需求了。只能改成开3个线程单独去处理了。 搁笔。如有疑问站内信联系
http://www.w-s-a.com/news/349817/

相关文章:

  • 个人备案网站名称校园网站建设特色
  • vr超市门户网站建设班级网站怎么做ppt模板
  • 网站建设一般是用哪个软件刚开始做写手上什么网站
  • 用jsp做的网站源代码下载有哪些做红色旅游景点的网站
  • 网站开发的技术选型黄石市网站建设
  • 做直播网站需要证书吗专做宝宝的用品网站
  • 网站标题用什么符号网站制作交易流程
  • dede模板网站教程jsp网站搭建
  • 上海网站开发外包公司鲜花导购网页制作
  • 宿州外贸网站建设公司个人注册网站一般做什么
  • 小公司做网站用哪种服务器什么是网站代理
  • 青岛李村网站设计公司cms建站平台
  • 做saas网站可行吗许昌抖音推广公司
  • 网站建设找谁做seo基础知识培训
  • 微网站怎么做的好建设网站不会写代码
  • 广州外贸网站制作wordpress信息搜索插件
  • 福建高端网站建设个人公众号怎么制作教程
  • 企业网站有哪些举几个例子wordpress ie兼容插件
  • 高端的深圳网站页面设计福清市建设局官方网站
  • 安装网站到服务器合肥建设干部学校网站
  • 影视网站如何做销售案例网站
  • 建设网站对比方案龙岗网站开发公司
  • 网站开发标准网站建设公司兴田德润可信赖
  • 如何建设一个公众号电影网站自动seo优化
  • 个人网站能备案吗酱香拿铁采取了哪些网络营销方式
  • 网站建设及推广好做吗自己做的网站加入购物车价格
  • 涡阳在北京做网站的名人注册一个免费的网站
  • 三门峡建设环境局网站公司注册网上核名通道
  • 叶县建设局网站要看网海外域名是多少
  • 网站运行环境配置Wordpress支付时效