草鸟新年求助,关于win32GUI模块消息响应机制
时间:2011-01-03
来源:互联网
大概是这样的,我运行的perl程序建立了两个子线程(也就是现在有三个线程了),
其中一个子线程创建了GUI图形界面,此为线程1
另一个线程进行大量的数值计算,占用60%~90%的cpu,此为线程2
现在的需求是,线程2中隔若干秒会产生出一个计算结果,而这个计算结果需要在线程1中的GUI界面里显示出来
小弟原来的的解决方案,是调用如下所示的函数:
my $main=Win32::GUI::Window->new( #创建GUI窗口
-name => 'Main',
-size=>[800,500],
-text=>'网络爬虫',
-resizable=>0,
-dialogui=>1,
-background=>[200,200,200]);
$main->Show();
while(Win32::GUI:
oEvents()!=-1){
&display;
threads->yield;
}
sub display
{
while($pipe_urlsout->pending){
my $url=$pipe_urlsout->dequeue_nb();
$addressout->Append("$url\t$urls_crawled{$url}\r\n"
;
}
}
由上面代码可以看出,由于不是基于消息响应机制,所以灰常耗cpu,于是小弟想改为基于消息响应的,可是不知道怎么弄,希望哪位大神给写个简单的例子,不甚感激~
其中一个子线程创建了GUI图形界面,此为线程1
另一个线程进行大量的数值计算,占用60%~90%的cpu,此为线程2
现在的需求是,线程2中隔若干秒会产生出一个计算结果,而这个计算结果需要在线程1中的GUI界面里显示出来
小弟原来的的解决方案,是调用如下所示的函数:
my $main=Win32::GUI::Window->new( #创建GUI窗口
-name => 'Main',
-size=>[800,500],
-text=>'网络爬虫',
-resizable=>0,
-dialogui=>1,
-background=>[200,200,200]);
$main->Show();
while(Win32::GUI:

&display;
threads->yield;
}
sub display
{
while($pipe_urlsout->pending){
my $url=$pipe_urlsout->dequeue_nb();
$addressout->Append("$url\t$urls_crawled{$url}\r\n"

}
}
由上面代码可以看出,由于不是基于消息响应机制,所以灰常耗cpu,于是小弟想改为基于消息响应的,可是不知道怎么弄,希望哪位大神给写个简单的例子,不甚感激~
作者: kaka2w 发布时间: 2011-01-03
太高深了,只会多进程的友情回复一下
作者: meihuaqi 发布时间: 2011-01-04
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28