K
kk98
Unregistered / Unconfirmed
GUEST, unregistred user!
在http://www.delphibbs.com/delphibbs/dispq.asp?LID=456229中你欲言又止,请在
这里继续说完吧!
>>>
1.两者均采用了多线程技术,每一个“蚂蚁”或一个“快车”采用一个线程,两者均采用
的是winsock2的异步选择模型,这种模型把异步事件映射为Windows的消息,这样就可以通过
Windows的消息处理网络事件,比如数据到达,下载失败等。若要在工作线程中处理消息,则
Windows会自动给每个线程建立消息循环。两者不同的是:网络蚂蚁的Winsock是在工作线程
中建立的,也就是说,在工作线程中首先创建一个窗口,再把winsock“选择”到此窗口,这样
当此“Winsock”发生了事件,会发送消息给工作线程中的窗口,工作线程中的窗口会处理这些
事件。而“快车”的处理方法是在主线程中建立了所有窗口,并创建所有的Winsock并“选择”
到相应窗口,根据多线程的原则“那个线程中创建的窗口,应该在此线程中处理所有的消息”,
“快车”则在工作线程中干了些什么呢?在不断地尝试“接收”数据,而不理会数据是否到达,(
它根本就没有处理相应的消息),这样的结果是“接收”100次,仅仅能够有大约7-8次能够接收到
数据,在大多少情况下,工作线程在作“无用功”,可见“快车”在大多少情况下是在“空跑”,
这样的方式能有效率吗?现在一般情况下,用户的电脑的速度都比较快,可以忍受这种“空跑”,
但从作软件的角度来看则不可取。
写了不少了,还有很多问题,本来想写,竟然招致如此的谩骂,我还是打住吧,看来还是少参和为
好。顺便提一下:有兴趣的可以通过Boundchecker等调试工具跟踪一下就知道了。
还有也可介绍一下Boundchecker等调试工具!
这里继续说完吧!
>>>
1.两者均采用了多线程技术,每一个“蚂蚁”或一个“快车”采用一个线程,两者均采用
的是winsock2的异步选择模型,这种模型把异步事件映射为Windows的消息,这样就可以通过
Windows的消息处理网络事件,比如数据到达,下载失败等。若要在工作线程中处理消息,则
Windows会自动给每个线程建立消息循环。两者不同的是:网络蚂蚁的Winsock是在工作线程
中建立的,也就是说,在工作线程中首先创建一个窗口,再把winsock“选择”到此窗口,这样
当此“Winsock”发生了事件,会发送消息给工作线程中的窗口,工作线程中的窗口会处理这些
事件。而“快车”的处理方法是在主线程中建立了所有窗口,并创建所有的Winsock并“选择”
到相应窗口,根据多线程的原则“那个线程中创建的窗口,应该在此线程中处理所有的消息”,
“快车”则在工作线程中干了些什么呢?在不断地尝试“接收”数据,而不理会数据是否到达,(
它根本就没有处理相应的消息),这样的结果是“接收”100次,仅仅能够有大约7-8次能够接收到
数据,在大多少情况下,工作线程在作“无用功”,可见“快车”在大多少情况下是在“空跑”,
这样的方式能有效率吗?现在一般情况下,用户的电脑的速度都比较快,可以忍受这种“空跑”,
但从作软件的角度来看则不可取。
写了不少了,还有很多问题,本来想写,竟然招致如此的谩骂,我还是打住吧,看来还是少参和为
好。顺便提一下:有兴趣的可以通过Boundchecker等调试工具跟踪一下就知道了。
还有也可介绍一下Boundchecker等调试工具!