Board logo

标题: [问题求助] ~~关于TW3的三种进程模式,求“开发组”和“知情特务”解惑~~【修正错误】 [打印本页]

作者: Arcanist    时间: 2009-8-3 11:56     标题: ~~关于TW3的三种进程模式,求“开发组”和“知情特务”解惑~~【修正错误】

本帖最后由 Arcanist 于 2009-8-3 17:30 编辑

说明见贴末

写在前面:

因一问而胡思乱想,才有此贴。有点后悔没加入内测组了~
对“进程”和“线程”一点都不清楚的同学,就当是看个热闹~~
我不懂程序,就说说TW3的三种进程模式

单进程模式——“单进程多线程”一个页面一个线程
多进程模式——“多进程单线程”一个页面一个进程


没问题吧?(有问题就惨了
一个页面多个线程,在技术上应该不容易实现,我想同步是一个大问题

假死有两个方面,一个是网页假死,还有一个是浏览器假死

TW2就是“单进程多线程”——一个线程死了,进程却不一定会死,减少了浏览器假死的概率
那么,要想浏览器不假死,是否把“界面”和“页面”分开就可以立于不败之地?两个进程足矣?

网页代码比较复杂、数据过多,代码有bug、系统繁忙、性能不足、执行效率低下
“页面”该死的时候还是会死,完全意义上的“防假死”应该很难做到
但“防浏览器假死”就很容易,单独一个进程就解决了(说起来容易,做起来麻烦肯定不断)

线程与线程之间关系比较紧密,相互影响比较大;进程与进程之间则相对独立~
所以,网页在执行的时候,“多进程单线程”比“单进程多线程”更具优势,更不容易死,但资源占用也更高

而“混合模式”就是“多进程多线程”,介于两者之间,取得一个平衡
(不妨看成是1+N个TW2的“单进程多线程”,1代表“界面”单独一个进程)

在少量网页需求时保持较低的资源占用
在大量网页需求时又不会因为同进程线程太多从而导致网页执行时不稳定

还有其它优点吗?

多进程的另一好处是不是就是“资源释放”?
这几种模式的主要区别是否就在于“抗假死”和“资源释放”的能力不同?
在一般应用下,“混合模式”是不是就已经能够胜任?
“单进程模式”的“界面”和“页面”在同一进程,为什么也能做到“防假死”?
TW2就不行?这里面有什么技术?是不是“剥离界面”到单独的一个线程?

最后,请问IE6是不是“单进程单线程”浏览器?最近有人告诉我不是……
如果不是,TW1呢?“多页面单线程”有没有存在过?标签和线程是两回事,没错吧?
那位特务说的话不得不值得考虑,我还真有点动摇了……

以上都是自己的推断,有不对的地方,还请众特务(TWer)指出
尤其希望能得到开发组的回复
问题得不到答案,让人抓破头

——————分割线——————

这个不算刺探机密吧,如果是,开发组就简单说说
就标签来说,是不是“一个标签一个线程”?剩下的我自己想办法解决
借5楼的图用一用~
http://www.ioage.com/revision/template/cn/skin/default/help/SingleProcess.png

看了熊猫老大的回复,貌似我说的没什么大问题~~哈哈

写在后面:

为了区分“多进程模式”和“混合模式”

将“多进程模式”定位成“多进程单线程”,就是说每一个进程只有一个线程
因为是多进程,所以实际上还是多线程

“混合模式”就是“多进程多线程”,每一个进程都有多个线程
这也是“单进程模式”的形式,但结合了多进程,所以才叫混合模式。

开发组没有明确指出“一个页面一个线程”的正误
但从熊猫老大的回复上看貌似就是这样了,姑且就这么认为吧
虽然都是“多进程+多线程”,但区别就在这里

————————————————————————

真不好意思,经人提点,我才发现,将“页面”和“标签”混为一谈是不对的
由于我没有说清楚,给大家造成了误解
我这里的说的“线程”只是针对“标签”来说的,没有考虑其他
就是想更清楚的了解TW3的“进程模式”和“防假死”之间的关系
给大家说声抱歉
作者: Continued    时间: 2009-8-3 12:04

本帖最后由 Continued 于 2009-8-3 12:12 编辑

防假死是异步消息处理,多进程&多线程也可以同步阻塞的.如果是多进程的防假死,在双核下可能比较有优势.
个人觉得异步还是用于后台操作为好,前台显示用这个会有很多问题.
在我看来,多进程能充分利用&释放资源,安全上也便于做改进,但是打开相同网页的情况下,资源占用会比单进程大.
至于为什么TW2没有防假死,但是MT2.5可以有防假死,这个得问开发.
作者: duckZCX    时间: 2009-8-3 12:06

看得好晕啊

别胡猜了。

3种模式都是多线程


1.x到2.x的过渡,主要引入了多线程机制,所以这是进步的地方

2.x到3.x,架构的改变,引入了灵活的框架模式,当然此前优秀的多线程 不会变动的
作者: jym2005    时间: 2009-8-3 12:08

提示: 作者被禁止或删除 内容自动屏蔽
作者: abcpw    时间: 2009-8-3 12:15

被楼主说晕了。。。

感觉和楼主理解的差不多,我刚才找了主站上的一张图
http://www.ioage.com/revision/template/cn/skin/default/help/SingleProcess.png

有点弄不清线程和标签的区别在哪里,按理说tw1是单进程单线程多页面,而tw2是单进程多线程多页面,tw1和tw2应该都适应上图那个模型,可是他们的线程到底是如何分配的?


作者: Arcanist    时间: 2009-8-3 12:17

希望得到详细解答,像我这样啰嗦、直白一点
说的太笼统还是一头雾水~~
作者: duckZCX    时间: 2009-8-3 12:28

本帖最后由 duckZCX 于 2009-8-3 12:31 编辑

- -开发组估计也不好说这个问题,我大致说一些我明白的。

1.    由于IE当时的单页面方式造成管理不便和视觉不爽等特点,才催生了各式各样的多页面浏览器,而这个多页面和线程是没有 任何联系的,更别提进程了。  

所以,TW1是单进程,单线程。 PS:IE6貌似是单进程,多线程。

2.在TW1的简洁灵活的基础上,推陈出新的TW2主要问题是解决IE核心的假死问题,于此同时多线程的 架构就已经初具模型了,而后有了TW2的多线程机制。

至此,TW2系列,单进程,多线程。  ----防假死较TW1进一步改善。


3.线程和进程永远是两个共生体,加之TW2本身的一些不足之处和开发组自己的经验,逐渐催生更好的防假死模式,那就是多进程。当然,在此模式下,会衍生出很多难以控制到的地方,这也是到目前为止TW3的防假死依旧还在改进当中,这项工作也是长期的了。

TW3系列:多进程,多线程。
作者: Continued    时间: 2009-8-3 12:37

TW2和MT2所说的多线程都是UI多线程,IE6应该不是
其实那个所谓的更好的防假死,应该都是搜狗起的头,然后大家跟风,余下带来的问题解决就有好有坏了,自己觉得MT2.5的解决的好些.
作者: Arcanist    时间: 2009-8-3 12:39

那么,从TW2开始,是不是就是一个页面一个线程呢?线程又是如何分配的?
作者: duckZCX    时间: 2009-8-3 12:41

TW2和MT2所说的多线程都是UI多线程,IE6应该不是
其实那个所谓的更好的防假死,应该都是搜狗起的头,然后大家跟风,余下带来的问题解决就有好有坏了,自己觉得MT2.5的解决的好些.
Continued 发表于 2009-8-3 12:37 http://bbs.ioage.com/cn/images/common/back.gif

都是程序的爹妈,都会为完善自己的孩子而努力,所以思维撞车是很常见的事情,所谓的谁早谁晚也只是噱头罢了,重要的是谁能善后得当,哈哈。
作者: duckZCX    时间: 2009-8-3 12:41

那么,从TW2开始,是不是就是一个页面一个线程呢?线程又是如何分配的?
Arcanist 发表于 2009-8-3 12:39 http://bbs.ioage.com/cn/images/common/back.gif

你挖那么详细干嘛,要技术白皮书啊?

- -再往上问,我要被丢西红柿了
作者: Arcanist    时间: 2009-8-3 12:44

你挖那么详细干嘛,要技术白皮书啊?

- -再往上问,我要被丢西红柿了
duckZCX 发表于 2009-8-3 12:41 http://bbs.ioage.com/cn/images/common/back.gif

刺探高层机密
我也没办法,不弄明白,大脑一团乱麻,饭都吃不下……
作者: Continued    时间: 2009-8-3 12:46

路过 等待高人给LZ解释
作者: Arcanist    时间: 2009-8-3 12:50

单进程模式——“单进程多线程”一个页面一个线程
多进程模式——“多进程单线程”一个页面一个进程

一个进程可以包括多个线程,但一个进程至少包括一个线程,同一进程的多个线程共享进程所拥有的资源(内存、硬 ...
tjmzq 发表于 2009-8-3 12:48 http://bbs.ioage.com/cn/images/common/back.gif

你就不用来了,全是废话
作者: abcpw    时间: 2009-8-3 13:02

楼上两位对手又遇上了,占座围观。
作者: Arcanist    时间: 2009-8-3 13:09

楼上两位对手又遇上了,占座围观。
abcpw 发表于 2009-8-3 13:02 http://bbs.ioage.com/cn/images/common/back.gif

谢绝围观~~
稍微懂一点皮毛,就知道多线程并发处理可以提高效率
何况是内核级的技术,给我白皮书我都看不懂
作者: pader    时间: 2009-8-3 13:23

迷糊...
作者: susu_wu    时间: 2009-8-3 13:29

似乎。。。好像。。。可能。。。也许吧!
作者: lyxs    时间: 2009-8-3 13:44

刺探高层机密
我也没办法,不弄明白,大脑一团乱麻,饭都吃不下……
Arcanist 发表于 2009-8-3 12:44 http://bbs.ioage.com/cn/images/common/back.gif

不是有西红柿嘛,正好下饭~
作者: crystal0808    时间: 2009-8-3 13:52

这个没有什么好搞的吧,老老实实用人家的浏览器就行了,都有人给你弄好了,你还非得想那么多。

多进程的优势是防假死稍微彻底一点,一个进程(页面)死了可以直接kill掉不会影响其他的,线程死了就没法kill了,而且还影响其他线程的工作。但是进程创建起来的时间是线程的N倍。
线程小巧灵活,但是很难驾驭,主要是要把一个进程中的各个线程结合在一起,做出良好高效的通信时很有难度的。

各取所需吧

现在突然想起来某个人的比喻一个士兵轻装上阵一个重铠甲上阵,前者防御性差但速度机动性强,后者机动性灵活性差了点但是防御性很好。
前者是线程后者是进程,前阵上阵可以随叫随到立刻上阵,后者需要穿铠甲做准备的时间,而且来的速度也慢。

前者就像孙悟空,驾驭好了威力无穷,驾驭不好大闹天宫搞得鸡犬不宁,所以需要一个很好的管理者来处理这个,进行优化,组织好各个猴子之间的协作,这样才能更好的发挥威力,所谓的团队吧
后者就像牛魔王,笨重而稳重,防御性很好,也是孙悟空的敌手,能力相当。只是各有所长。

胡乱一通,不知道对不对,哈哈
各位看客见笑了
作者: netac    时间: 2009-8-3 14:00

1.X:单进程+单线程 - 所有页面都在一个进程且都是一个线程
2.X:单进程+多线程:所有页面都在一个进程,所有页面都在不同线程
3.X:多进程+多线程:页面可在不同进程,所有页面都在不同线程
作者: april    时间: 2009-8-3 14:11

这个没有什么好搞的吧,老老实实用人家的浏览器就行了,都有人给你弄好了,你还非得想那么多。

多进程的优势是防假死稍微彻底一点,一个进程(页面)死了可以直接kill掉不会影响其他的,线程死了就没法kill了,而且 ...
crystal0808 发表于 2009-8-3 13:52 http://bbs.ioage.com/cn/images/common/back.gif
比喻的不错,跟听故事一样
作者: crystal0808    时间: 2009-8-3 14:31

1.X:单进程+单线程 - 所有页面都在一个进程且都是一个线程
2.X:单进程+多线程:所有页面都在一个进程,所有页面都在不同线程
3.X:多进程+多线程:页面可在不同进程,所有页面都在不用线程
netac 发表于 2009-8-3 14:00 http://bbs.ioage.com/cn/images/common/back.gif

那3.x的多线程用来干什么去了?
作者: crystal0808    时间: 2009-8-3 14:32

比喻的不错,跟听故事一样
april 发表于 2009-8-3 14:11 http://bbs.ioage.com/cn/images/common/back.gif

谢谢哈,你也来讲一个
作者: crystal0808    时间: 2009-8-3 14:33

1.X:单进程+单线程 - 所有页面都在一个进程且都是一个线程
2.X:单进程+多线程:所有页面都在一个进程,所有页面都在不同线程
3.X:多进程+多线程:页面可在不同进程,所有页面都在不用线程
netac 发表于 2009-8-3 14:00 http://bbs.ioage.com/cn/images/common/back.gif

那3.x的多线程什么时候能够用到啊?混合模式?还是有其他的功用
作者: Arcanist    时间: 2009-8-3 15:11

那3.x的多线程什么时候能够用到啊?混合模式?还是有其他的功用
crystal0808 发表于 2009-8-3 14:33 http://bbs.ioage.com/cn/images/common/back.gif

你用多进程模式,一个页面就占一个进程
我说的“多进程单线程”就是指这个
“单线程”说的是同进程只有一个线程,所以实际上还是多线程

混合模式,就是说有多个进程,每个进程又有多个线程,一个线程一个页面

你想想TW2是不是“一个进程多个线程多个页面”?
现在变成了“多个进程多个线程多个页面”...
结合了多进程,所以才叫混合模式
作者: crystal0808    时间: 2009-8-3 16:41

你用多进程模式,一个页面就占一个进程
我说的“多进程单线程”就是指这个
“单线程”说的是同进程只有一个线程,所以实际上还是多线程

混合模式,就是说有多个进程,每个进程又有多个线程,一个线程一个页面 ...
Arcanist 发表于 2009-8-3 15:11 http://bbs.ioage.com/cn/images/common/back.gif

后面的应该想的跟我想的一样。
前面有句“‘单线程’说的是同进程只有一个线程,所以实际上还是多线程”,这句的“实际上还是多线程”感觉不对吧。多线程是相对于一个进程里面的线程而言的吧?难道不同进程里面的单个线程组合起来也算多线程?不知道我理解的对不对
作者: 258369    时间: 2009-8-3 16:55

我现在就是用的多进程模式
谁说一个进程就是一个线程呢?
作者: Arcanist    时间: 2009-8-3 17:01

本帖最后由 Arcanist 于 2009-8-3 17:11 编辑
我现在就是用的多进程模式
谁说一个进程就是一个线程呢?
258369 发表于 2009-8-3 16:55 http://bbs.ioage.com/cn/images/common/back.gif


多谢提点,这就是我一直想要弄明白的,我去测试一下
这张图不知道想说明什么,我说的线程只是针对这个标签页面来说的~
我也不知道如何说才好~~毕竟自己也是一知半解
现在编写的程序很少见到单线程的了,多线程并发处理才是效率呀
何况网页里面有那么多的数据需要执行
虽然我不懂程序,但这点还是知道的
作者: Arcanist    时间: 2009-8-3 17:16

本帖最后由 Arcanist 于 2009-8-3 17:17 编辑
后面的应该想的跟我想的一样。
前面有句“‘单线程’说的是同进程只有一个线程,所以实际上还是多线程”,这句的“实际上还是多线程”感觉不对吧。多线程是相对于一个进程里面的线程而言的吧?难道不同进程里面的 ...
crystal0808 发表于 2009-8-3 16:41 http://bbs.ioage.com/cn/images/common/back.gif

说实话我也有点糊涂了,现在的程序都是多线程了~
但我这里只考虑单个标签,那么线程如何分配呢?
一个标签占据一个进程,用一个线程来执行它,需要多线程么?
(这里只说标签,不知道可懂我的意思?)
如果从整个程序来说,TW1也不是单线程浏览器呀
作者: hblf    时间: 2009-8-3 17:40

说实话我也有点糊涂了,现在的程序都是多线程了~
但我这里只考虑单个标签,那么线程如何分配呢?
一个标签占据一个进程,用一个线程来执行它,需要多线程么?
(这里只说标签,不知道可懂我的意思?)
如果从整 ...
Arcanist 发表于 2009-8-3 17:16 http://bbs.ioage.com/cn/images/common/back.gif


我猜测的是这样:除了用线程来解析页面外,还需要跟别的进程间通信,因为有同组标签、有其他各个功能,所以,多进程模式下,也不会只有一个线程在工作,而还会建立多个线程来实现各个功能。

这些都是我作为普通用户的猜测,如有偏颇,欢迎指教!
PS 这帖子水忒深了……
作者: Arcanist    时间: 2009-8-3 18:07

本帖最后由 Arcanist 于 2009-8-3 18:10 编辑
我猜测的是这样:除了用线程来解析页面外,还需要跟别的进程间通信,因为有同组标签、有其他各个功能,所以,多进程模式下,也不会只有一个线程在工作,而还会建立多个线程来实现各个功能。

这些都是我作为普 ...
hblf 发表于 2009-8-3 17:40 http://bbs.ioage.com/cn/images/common/back.gif

我很赞同,都是我用词不准确害的
貌似很多软文也没有明确说明这一点,莫非是故意混淆概念...
如果程序只用一个线程来运行,光想想就头疼




欢迎光临 世界之窗论坛 (http://bbs.theworld.cn/) Powered by Discuz! 7.2