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

工业网站开发商asp.net 网站计数器

工业网站开发商,asp.net 网站计数器,自己做海报的网站,超市营销型网站建设策划书在我们这批新人转正评审的时候#xff0c;我师父问了我的小伙伴一个问题#xff1a;为什么一些更新界面的方法只能在主线程中调用#xff1f;师父没有问我这个问题#xff0c;让知其然但不知其所以然的我有种侥幸逃过一难的心情。我想如果回答那是因为Android GUI库是单线程…在我们这批新人转正评审的时候我师父问了我的小伙伴一个问题为什么一些更新界面的方法只能在主线程中调用师父没有问我这个问题让知其然但不知其所以然的我有种侥幸逃过一难的心情。我想如果回答那是因为Android GUI库是单线程消息机制的更新界面的操作必须放到主线程中执行那师父可能继续问为什么Android GUI要设计成单线程的我就不知道了。为什么它非得设计为单线程的多线程不是更好吗带着点好奇感和求知欲以及鄙视权威的无畏精神我在google中展开了搜索并最终找到了一个令我满意的解释欣喜之余将我的理解分析给大家。单线程消息队列机制首先我还是说一下我对GUI单线程消息队列机制的理解这是我大学里几年编程经验赚来的知其然的部分。Android、Swing、MFC等的GUI库都使用单线程消息队列机制来处理绘制界面、事件响应等消息在这种设计中每个待处理的任务都被封装成一个消息添加到消息队列中。消息队列是线程安全的(消息队列自己通过加锁等机制保证消息不会在多线程竞争中丢失)任何线程都可以添加消息到这个队列中但是只有主线程(UI线程)从中取出消息并执行消息的响应函数这就保证了只有主线程才去执行这些操作。单线程消息队列机制存在一个问题消息响应函数中不能有耗时长的、计算密集型的操作因为主线程在努力地处理这样的操作的时候就无法去处理其它的积压在消息队列中的绘制消息、事件消息了(一个消息处理完了主线程才会去队列中取下一个消息)这时候就会出现按键无响应、点击无反应的情况。但这个问题有完美的解决方案我们可以在消息响应函数中启动另一个工作线程(Worker Thread)来执行耗时操作这样在线程启动起来后这个消息就算处理完了主线程可以取下一个消息了这时候主线程和还未执行完计算任务的工作线程就在操作系统的调度下并驾齐驱地狂奔了(调度算法会保证两个线程并发或并行地执行不会专宠某个线程)。一般我们在耗时任务执行完后还要更新界面展示计算的结果由于我们不能直接在工作线程中更新界面所以可能有些小伙伴直接在消息响应函数中线程start后就接着调用join来等待线程结束以更新界面这其实相当于把耗时任务直接放在主线程去执行因为在消息响应函数中join其实就是主线程在join积压的消息是得不到处理的。正确的处理办法是将耗时任务改为异步通知机制即工作线程向消息队列中添加消息以通知主线程耗时任务完成了这样主线程在启动工作线程后就不需要主动地去调查任务的进展了“任务结束的时候它会通知我的”主线程如是说。工作线程向主线程的消息队列添加消息的常用方法如下l AndroidAcitvity.runOnUiThead、Handler.post、AsyncTaskl SwingSwingUtilities.invokeLaterl Win32、MFC自定义用户消息在工作线程中PostMessageGUI为什么不设计为多线程大部分的GUI toolkits都是设计为上面的单线程消息队列机制为什么不设计为多线程的呢如果GUI是多线程的CPU又是多核的话多个CPU核心可以并行地执行绘制等操作界面响应的速度应该是成倍提升的而且就算是其中有多线程共享的资源加锁不就行了吗在google搜索的过程中我看到了负责Swing开发的一个大师的一篇博客《Multithreaded toolkits: A failed dream?》从中我了解到开发多线程的GUI toolkits是一件吃力不讨好的事不仅开发难度大Bug多多用起来也未必可以获得理想中的效果其中的死锁和竞争大师们也感到头疼。多线程GUI加锁困难为什么这么困难大师讲了一个例子我们通过用户级的代码去改变界面如TextView.setText走的是个自顶向下的流程而系统底层发起的如键盘事件、点击事件走的是个自底向上的流程这样就麻烦了因为为了避免死锁每个流程都要走一样的加锁顺序而GUI中的这两个流程却是完全相反的如果每一层都有一个锁的话加锁就是个难以完成的任务了而如果每一层都共用一个锁的话那就跟单线程没区别了。于是GUI toolkits的开发者就“不负责任”地把GUI设计成了单线程消息队列机制然后他们还说界面更新一般不是瓶颈单线程足够了。然后我瞬间想到了3D游戏单线程对于3D应该是很吃力的但实际上负责3D绘制的是显卡的GPUGPU不像CPU那样事无巨细、事必亲躬、鞠躬尽瘁、死而后已只负责画好它的图就可以了所以并行起来不是件困难的事。http://blog.csdn.net/liuqiaoyu080512/article/details/12895005#t1
http://www.zqtcl.cn/news/30114/

相关文章:

  • dnf做任务解制裁的网站网站做优化好还是推广好
  • 网站开发目的纵横seo
  • 网站建设 昆明网站建设经济可行性分析
  • 宝安专业网站设计公司商标设计图案免费
  • 建设银行网站怎么预约纪念币施工企业资质新规定
  • 网站线框图软件莒县网站建设公司
  • 网站开发费 会计科目php mysql网站开发试题a
  • 凡科网站怎么做友情链接做网站和做网页有什么区别
  • 商丘网站建设做企业网站步骤
  • 网站 子域名做网站项目的流程
  • 手工做衣服网站中国人做跨电商有什么网站
  • 手机网站制公司网站开发策划书
  • 天猫网站设计一键制作短视频
  • 茂名整站优化个人可以做哪些网站
  • 网站建设初步规划书工业设计优秀作品
  • 上海智能网站建设设计淄博英文网站建设专业
  • 手机wap网站大全有关做美食的网站乐
  • 网站是怎么制作的成都公司网页制作联系电话
  • 网站域名的选择方法短网址生成怎么使用
  • 做淘宝美工图片网站10岁一12岁的创意手工
  • 广州网站优化建设百度开店怎么收费
  • 销售网站建设推广订餐网站建设
  • 网站备案是怎么回事亦庄建站推广
  • 松阳网站建设常用的网站建设技术包括
  • ps 做ui比较好的网站厦门同安建设局网站
  • 民治做网站哪家便宜网站怎么优化自己免费
  • 深圳罗湖网站设计公司四库一平台官网
  • 南阳微网站建设俄乌今天最新军事动态
  • 安徽经工建设集团网站北京建站推广
  • 衡水市网站制作哈尔滨网站域名备案