2011-11-09 2 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"; 
} 

오류는 같은 수 있습니다 : '39631808'을 존재하지 않는 공유 문자열을 해제 할 수

시도, 펄 인터프리터 : 0x2879910.

[1] 분할 오류

답변