Chinaunix首页 | 论坛 | 博客
  • 博客访问: 99748
  • 博文数量: 40
  • 博客积分: 426
  • 博客等级: 下士
  • 技术积分: 305
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-02 11:04
文章分类

全部博文(40)

文章存档

2013年(1)

2012年(1)

2011年(38)

我的朋友

分类:

2011-03-02 11:28:41

四、 Messenger的调度系统

      对于同步消息的递送机制没有更多值得叙述的,根据以上的设计,任何人都可以有自己的send方法的实现,而且通常也不会有太多的意外。但对于异步消息的递送机制, 也就是本文提到的调度系统就要非常考究了,在JavaScript里我们需要找一种类似多线程的技术来实现这个调度系统。
      我们知道JavaScript是没有线程概念的(这句话,或许不一定准确),这可以理解为,在浏览器里JavaScript并不像一个通常意义多任务系统一样,存在任务(线程)切换的概念,而是只有一个单一的UI线程在交替执行UI渲染和事件处理。我们可以把浏览器的javascript调度理解为下图:


      UI更新,各种事件的处理以及一些JavaScript方法调用就像一个个任务排队等候着UI线程来调度执行。由此,我们可以理解,当一个JavaScript方法的执行如果不能尽快地返回,为什么浏览器就会表现出“假死”原因了。
      既然浏览器没有为JavaScript提供多线程的技术,而这个Messenger系统又需要使用多线程技术,我们如何设计这个Messenger的调度系统呢?先回忆一下多任务操作系统的多任务调度的原理吧,

未完待续...

一直没有时间“来续未完”,只好在这里放一个链接,有兴趣了解这个通信系统的可以去看一下,主要是js.util.Messenger.js

阅读(816) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~