免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2316 | 回复: 1
打印 上一主题 下一主题

草鸟新年求助,关于win32GUI模块消息响应机制 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-03 18:52 |只看该作者 |倒序浏览
大概是这样的,我运行的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,于是小弟想改为基于消息响应的,可是不知道怎么弄,希望哪位大神给写个简单的例子,不甚感激~

论坛徽章:
0
2 [报告]
发表于 2011-01-04 16:08 |只看该作者
太高深了,只会多进程的友情回复一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP