当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : gtk-perl:多线程问题
帖子发表于 : 2010-07-30 13:12 

注册: 2008-02-20 11:46
帖子: 84
送出感谢: 0 次
接收感谢: 0 次
代码:
#!/bin/env perl

use strict;
use warnings;
use threads;
use Gtk2;
use Glib qw(TRUE FALSE);
$|++;
my $str = 'test';
Gtk2::Gdk::Threads->init();
Gtk2->init();
my $window= Gtk2::Window->new("toplevel");
$window->signal_connect(delete_event => sub { Gtk2->main_quit(); });
$window->set_border_width(10);
my $button = Gtk2::Button->new_with_label("Hello World");
$button->signal_connect(clicked => \&new_thread);
$window->add($button);
$window->show_all();

Gtk2::Gdk::Threads->enter();
Gtk2->main();
Gtk2::Gdk::Threads->leave();

##############################################

sub hello()
{
        print "sad:$str\n";
}

sub new_thread()
{
        hello();
        my $t = threads->create(\&test);
        $t->detach();
}

sub test()
{
#                Gtk2::Gdk::Threads->enter();
                print "weigun\n";
#                Gtk2::Gdk::Threads->leave();
}


下面这两句,无论注释与否都不行····
# Gtk2::Gdk::Threads->enter();
# Gtk2::Gdk::Threads->leave();
那个按钮按了第二次就出错了···一大堆错误·····程序的输出信息如下:

sad:test
weigun
sad:test
weigun
GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-WARNING **: instance of invalid non-instantiatable type `<invalid>' at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-CRITICAL **: g_signal_emit_valist: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-WARNING **: instance of invalid non-instantiatable type `<invalid>' at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-CRITICAL **: g_signal_handlers_destroy: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-WARNING **: instance of invalid non-instantiatable type `<invalid>' at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-CRITICAL **: g_signal_handlers_destroy: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed at D:\test-area\gtk_test\gtk_threads.pl line 23.
Usage: Glib::Object:ESTROY(sv) at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-WARNING **: instance with invalid (NULL) class pointer at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-CRITICAL **: g_signal_handlers_destroy: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-WARNING **: instance with invalid (NULL) class pointer at D:\test-area\gtk_test\gtk_threads.pl line 23.
GLib-GObject-CRITICAL **: g_signal_handlers_destroy: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed at D:\test-area\gtk_test\gtk_threads.pl line 23.

============================================
一头雾水···所以··求高手解释····谢谢··


页首
 用户资料  
 
2 楼 
 文章标题 : Re: gtk-perl:多线程问题
帖子发表于 : 2010-07-30 15:51 

注册: 2008-02-20 11:46
帖子: 84
送出感谢: 0 次
接收感谢: 0 次
定一个·


页首
 用户资料  
 
3 楼 
 文章标题 : Re: gtk-perl:多线程问题
帖子发表于 : 2010-08-05 8:29 

注册: 2008-10-31 22:12
帖子: 6546
系统: 践兔
送出感谢: 18
接收感谢: 25
闻到死底下的?
谁知道可靠不可靠阿?
Gtk的貌似都会产生很多Warning


_________________
代码:
] ls -ld //


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译