- 论坛徽章:
- 0
|
大概是这样的,我运行的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,于是小弟想改为基于消息响应的,可是不知道怎么弄,希望哪位大神给写个简单的例子,不甚感激~ |
|