2011-11-09 7 views
0

私にはQt :: Objectというクラスがあり、スレッドを作成するメソッドがあります。Perl Qt 3.1とスレッド

スレッドを切り離そうとしたり、スレッドに参加しようとするたびに、エラーが発生します。

また、発光信号が働いていません。

サンプルコードされています。私が手にエラーが似ている

package MyThread; 

use threads; 

use Qt; 
use Qt::isa qw(Qt::Object); 
use Qt::signals 
imageResRecieved => ['int', 'int']; 

sub NEW 
{ 
    shift->SUPER::NEW(@_[0..2]); 
    if (name() eq "unnamed") { 
     setName("MyThread"); 
    } 
} 

sub getWidthHeight{ 
    my ($seq, $frameNum) = @_; 
    my ($width, $height) = (1920, 1080); 
    sleep(2); 
    print "Emitting\n"; 
    emit imageResRecieved($width, $height); 
    print "AFTER Emit\n"; 
} 


sub getImageWidthThread{ 
    my $thr = threads->create('getWidthHeight', @_); 

    $thr->detach(); # This causes seg faults 
} 

use MyThread; 
use Qt::slots 
    handleImageResSignal => ['int', 'int']; 

    my $mythread = MyThread(); 
    Qt::Object::connect($irt, SIGNAL "imageResRecieved(int, int)", this, SLOT "handleImageResSignal(int, int)"); 
    $mythread->getImageWidthThread("$GLOBAL{DIR}/$GLOBAL{PAT}", $seq_start); 

    sub handleImageResSignal{ 
     my ($width, $height) = @_; 
     print "\n Emitted ${width} ${height} \n"; 
} 

:0x2879910:存在しない共有文字列 '39631808'、Perlインタープリターを解放する

試み。

[1]セグメンテーションフォールト

答えて

関連する問題