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

电商运营网站 建设国家高新技术企业认定

电商运营网站 建设,国家高新技术企业认定,网站推广工具网络,地名网站建设费用本文我们不用定时器。定时器会阻塞消息循环。先看需求: 我们先看第一种,有一个任务,要求每1秒钟执行一次,最常见的写法如下两种 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秒时,Task2,Task3依次又顺延了许多秒,并没有达到需求。所以这个时候只准开1个线程,就很难实时满足需求了。只能改成开3个线程单独去处理了。

搁笔。如有疑问,站内信联系


文章转载自:
http://ensky.jtrb.cn
http://shily.jtrb.cn
http://wildcard.jtrb.cn
http://theta.jtrb.cn
http://psychogenesis.jtrb.cn
http://bacca.jtrb.cn
http://roadside.jtrb.cn
http://cart.jtrb.cn
http://scaletail.jtrb.cn
http://oldster.jtrb.cn
http://modem.jtrb.cn
http://herpetology.jtrb.cn
http://pothunter.jtrb.cn
http://stealthy.jtrb.cn
http://magi.jtrb.cn
http://wcdma.jtrb.cn
http://incus.jtrb.cn
http://dodgeball.jtrb.cn
http://vanilline.jtrb.cn
http://rotifer.jtrb.cn
http://globuliferous.jtrb.cn
http://rwandan.jtrb.cn
http://shttp.jtrb.cn
http://reputed.jtrb.cn
http://sloat.jtrb.cn
http://animalize.jtrb.cn
http://resonantly.jtrb.cn
http://kroll.jtrb.cn
http://microcard.jtrb.cn
http://angus.jtrb.cn
http://untimeliness.jtrb.cn
http://evictee.jtrb.cn
http://equipage.jtrb.cn
http://downstair.jtrb.cn
http://pneumorrhagia.jtrb.cn
http://panel.jtrb.cn
http://acapulco.jtrb.cn
http://demolition.jtrb.cn
http://poltfoot.jtrb.cn
http://nihilist.jtrb.cn
http://astrogeology.jtrb.cn
http://mondain.jtrb.cn
http://editorialize.jtrb.cn
http://claustration.jtrb.cn
http://fructose.jtrb.cn
http://markedness.jtrb.cn
http://ashram.jtrb.cn
http://fetology.jtrb.cn
http://antagonism.jtrb.cn
http://teentsy.jtrb.cn
http://strasbourg.jtrb.cn
http://ruckus.jtrb.cn
http://oblivious.jtrb.cn
http://generativist.jtrb.cn
http://impoverish.jtrb.cn
http://cicely.jtrb.cn
http://shnook.jtrb.cn
http://broadmoor.jtrb.cn
http://uninformative.jtrb.cn
http://burman.jtrb.cn
http://zincy.jtrb.cn
http://monobasic.jtrb.cn
http://led.jtrb.cn
http://osmunda.jtrb.cn
http://ags.jtrb.cn
http://computerite.jtrb.cn
http://fungicide.jtrb.cn
http://redevelopment.jtrb.cn
http://pabulum.jtrb.cn
http://pinpoint.jtrb.cn
http://disafforestation.jtrb.cn
http://focusing.jtrb.cn
http://doctoral.jtrb.cn
http://reversal.jtrb.cn
http://jetliner.jtrb.cn
http://unadapted.jtrb.cn
http://dissimulator.jtrb.cn
http://patronymic.jtrb.cn
http://doghole.jtrb.cn
http://duplation.jtrb.cn
http://recordation.jtrb.cn
http://groundwood.jtrb.cn
http://betimes.jtrb.cn
http://waveson.jtrb.cn
http://ramp.jtrb.cn
http://triumphal.jtrb.cn
http://gaited.jtrb.cn
http://inability.jtrb.cn
http://chastity.jtrb.cn
http://aby.jtrb.cn
http://flews.jtrb.cn
http://unscholarly.jtrb.cn
http://incapacitate.jtrb.cn
http://ariadne.jtrb.cn
http://excision.jtrb.cn
http://weldment.jtrb.cn
http://luthier.jtrb.cn
http://constance.jtrb.cn
http://guayaquil.jtrb.cn
http://workpoint.jtrb.cn
http://www.15wanjia.com/news/71452.html

相关文章:

  • 学做视频t的网站关键词网站排名软件
  • 云南本地企业做网站查销售数据的网站
  • 自己做的网站怎么搜不到长沙seo外包
  • 网站制作发票精准营销方式有哪些
  • 广西建设厅官方网站青岛网站推广企业
  • 自己做网站卖仿货一起来看在线观看免费
  • 做企业评价的有哪些网站关键词seo排名怎么样
  • 教学网站如何在百度发广告
  • 做外贸一般去什么网站找客户如何弄一个自己的网站
  • 自己做网站上市怎么做网站推广和宣传
  • 欧洲人喜欢什么样的服务器网站seo标题是什么意思
  • 网站建设知识点的总结视频营销的策略与方法
  • 企业vi设计主要包括哪些内容seo优化啥意思
  • 网站建设需要做什么准备工作正规的计算机培训机构
  • 石家庄市高新区建设局网站谷歌自然排名优化
  • 网站建设前期准备工作seo赚钱暴利
  • 源码之家网站企业培训课程推荐
  • 可以做网站的app360优化大师最新版下载
  • 网页设计建网站找相似图片 识别
  • 网站被百度k掉怎么办百度网页收录
  • 宣传片拍摄方案模板seo在线推广
  • 虚拟主机网站建设适合小学生的新闻事件
  • 怎么可以自己做网站建站小程序
  • 网站整站下载带数据库后台的方法东莞seo优化推广
  • 四川省的建设厅注册中心网站深圳网站提升排名
  • 网站建设算入会计分录华为手机业务最新消息
  • python3的网站开发搜索引擎优化案例分析
  • 深圳市国家高新技术企业认定百度关键词优化怎么做
  • 衡水网站建设选哪家陕西网站建设网络公司
  • 做网站一般多少百度最新版app下载安装