2011-11-09 32 views
0

我有一個類是一個Qt ::對象,並有一個方法來創建一個線程。Perl的Qt 3.1和線程

每當我嘗試分離或加入線程它seg錯誤。

此外發射信號不工作。

示例代碼:

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',Perl解釋器:0x2879910。

[1]分段故障

回答