返回列表 发帖

[问题求助] 既然是多线程的,为什么一个页面假死导致整个浏览器都要关闭呢?

如题:既然是多线程的,为什么一个页面假死导致整个浏览器都要关闭呢?

使用TW也有很长的时间了,用的过程当中,也频频发生假死事件。

根据论坛中各位老大们的帖子,我也明白了假死可能发生的原因:

1、插件
     这种可能性是最大的,由于插件的不当设置可能导致TW的假死,依据坛中兄弟的意见,把所有插件都设置成不自动运行,果真有效果!

2、黑名单

     这种可能性是比较大的,大家可以试试看,将黑名单功能关闭和打开,在关闭状态下,TW假死的情况很少发生。

3、设置不当

     因人而异,可能性未知。

4、系统冲突

     有此种可能,如搜狗拼音输入法的兼容性导致我们TW的假死

     以上四种原因大家可能都有所了解,而众所周知,TW是个多线程的浏览器,每一个页面不都该是一个线程么?那么其中一个线程的假死会导致我们整个浏览

器的关闭,这是为什么呢?难道这种假死不是单个页面的假死?

     这是我个人心中的疑问。。。也有可能是我们大家心中的疑问。。。

     希望开发组的人员能够给我们解答。。。。

谢谢!!!

我用的是2.1版,我是用搜狗输入法时,cpu占有率很高,
真的是兼容性的问题?

TOP

我认为楼主将“线程”和“进程”这两个词搞混了。
进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。而进程则不同,它是程序在某个数据集上的执行,是一个动态实体。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消,反映了一个程序在一定的数据集上运行的全部动态过程。

线程和进程的关系是:线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。线程可与属于同一进程的其它线程共享进程所拥有的全部资源,但是其本身基本上不拥有系统资源,只拥有一点在运行中必不可少的信息(如程序计数器、一组寄存器和栈)。


详细信息可以参看百度百科:线程   进程

采用多线程窗口框架的浏览器,区别于其它采用单线程的多窗口浏览器,多线程框架可以大幅减少由于某个网页假死导致的整个浏览器假死情况,并且可以在一定程度上提高网页打开速度。

Xiaoc大大的回复:
如果页面的线程假死了, 可能是在后台, 你没看到, 自然就不会发现有假死产生, 你能碰到的假死自然都是整个程序的假死。
只要你相信奇迹,你就会生活在奇迹之中...
If you believe in miracles, you will be in the miracle of life...

TOP

原帖由 vicandy 于 2008-3-25 13:49 发表 http://bbs.ioage.com/cn/images/common/back.gif
如果页面的线程假死了, 可能是在后台, 你没看到, 自然就不会发现有假死产生, 你能碰到的假死自然都是整个程序的假死。


要的就是这句话!!

谢谢回答!!

TOP

楼主遇到的是进程的死,而线程的死可能没有被楼主察觉
只要你相信奇迹,你就会生活在奇迹之中...
If you believe in miracles, you will be in the miracle of life...

TOP

没办法,因为tw是一个进程

TOP

整个进程都可能死掉……

TOP

那为什么有的机器开了多线程后就更容易假死,不开反而用的更好一些???这是一直困扰我的,我用过几个浏览器都是这样的,包括傲游,360,TW都一样,,,,,,本以后开了多线程更好,结果死的更多

我是SP3  HOME版的,IE7.0,TW2.41.1.

TOP

TW2 的多线程并没有做到每个标签窗口完全独立,TW3 (开启防假死) 则做到。

而实现多线程亦可能添加了 bug,造成新的假死情况。

TOP

返回列表