+ -
当前位置:首页 → 问答吧 → 草鸟新年求助,关于win32GUI模块消息响应机制

草鸟新年求助,关于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,于是小弟想改为基于消息响应的,可是不知道怎么弄,希望哪位大神给写个简单的例子,不甚感激~

作者: kaka2w   发布时间: 2011-01-03

太高深了,只会多进程的友情回复一下

作者: meihuaqi   发布时间: 2011-01-04